mosheng 发表于 2024-12-3 22:23:16

调用dll提示内容不为空(其上所使用的"@视窗.输入"属性要求...

本帖最后由 mosheng 于 2024-12-3 22:24 编辑

用C++编写一个dll文件,用Python是可以正常调用的,用到火山就不行了,图1是火山调用代码,图2是C++编写dll的代码,图3是Python调用的代码,
求助该怎么解决?







<火山程序 类型 = "通常" 版本 = 1 />

包 火山.程序

类 启动类 <公开 基础类 = 程序类>
{
    方法 启动方法 <公开 类型 = 整数>
    {
      // 在此处填入自己的代码
      变量 root_dir <类型 = 文本型>
      变量 mmkv_id <类型 = 文本型>
      root_dir = "C:\\Users\\mosheng\\PycharmProjects\\pythonProject1\\All"
      mmkv_id = "123456"

      showMMKV (root_dir, mmkv_id)

      返回 (1)
    }

    方法 showMMKV <公开 静态 类型 = 变整数 注释 = "" 注释 = "" @输出名 = "GetMMKVValue" @视窗.输入 = "MMKVWrapper.dll">
    参数 root_dir <类型 = 文本型 注释 = "C:\\\\Users\\\\mosheng\\\\PycharmProjects\\\\pythonProject1\\\\All" "">
    参数 mmkv_id <类型 = 文本型 注释 = "123456" "">
    {

      变量 key <类型 = 字节类>
      变量 result <类型 = 字节类>
      key = 文本到多字节 ("key_desc_userinfo", 假)
      result = GetMMKVValue (root_dir, mmkv_id, key)
      调试输出 (result)


    }

    #
}




Xelloss0618 发表于 2024-12-3 23:47:37

DLL命令声明里不能写代码啊……
另外火山有封装MMKV

<火山程序 类型 = "通常" 版本 = 1 />

方法 GetMMKVValue <公开 静态 类型 = 变整数 注释 = "" 注释 = "" 折叠 @输出名 = "GetMMKVValue" @视窗.输入 = "MMKVWrapper.dll">
参数 root_dir <类型 = 变整数 "">
参数 mmkv_id <类型 = 变整数 "">
{

}

方法 showMMKV <公开 静态 类型 = 文本型 注释 = "" 注释 = "" 折叠>
参数 root_dir <类型 = 文本型 "">
参数 mmkv_id <类型 = 文本型 "">
{
    // MMKV应该是UTF-8编码
    返回 (UTF8指针到文本 (GetMMKVValue (文本到UTF8 (root_dir, 真).取字节集指针 (), 文本到UTF8 (mmkv_id, 真).取字节集指针 (), 文本到UTF8 ("key_desc_userinfo", 真).取字节集指针 ())))
}

方法 UTF8指针到文本 <公开 静态 类型 = 文本型 注释 = "将UTF-8的文本指针转换为火山的文本型." 折叠 @嵌入式方法 = "">
参数 UTF8文本指针 <类型 = 变整数 注释 = "必须是带结束零字符的UTF8文本指针">
{
    @ @an<CVolString>((const U8CHAR*)@<UTF8文本指针>)
}

呵呵仙8 发表于 2024-12-3 23:57:24

mosheng 发表于 2024-12-4 00:12:23

Xelloss0618 发表于 2024-12-3 23:47
DLL命令声明里不能写代码啊……
另外火山有封装MMKV



谢谢大佬

mosheng 发表于 2024-12-4 00:29:14

Xelloss0618 发表于 2024-12-3 23:47
DLL命令声明里不能写代码啊……
另外火山有封装MMKV


自己封装了一天,才发现PIV里面封装的有MMKV的方法
<火山程序 类型 = "通常" 版本 = 1 />

包 火山.程序

类 启动类 <公开 基础类 = 程序类>
{
    方法 启动方法 <公开 类型 = 整数>
    {
      // 在此处填入自己的代码
      变量 MMKV <类型 = MMKV键值表>
      MMKV.全局初始化 ("C:\\Users\\mosheng\\PycharmProjects\\pythonProject1\\All", )
      MMKV.打开 ("123456", 2, )
      变量 取回结果 <类型 = 逻辑型>
      变量 res <类型 = 标准文本类U>
      res = MMKV.取UTF8文本2 ("key_desc_userinfo")
      调试输出 ("res", res.到文本型 ())
      返回 (1)
    }

    #
}
这样子直接用,就解析出来了
页: [1]
查看完整版本: 调用dll提示内容不为空(其上所使用的"@视窗.输入"属性要求...