递归火山软件开发平台

标题: 调用dll提示内容不为空(其上所使用的"@视窗.输入"属性要求... [打印本页]

作者: mosheng    时间: 2024-12-3 22:23
标题: 调用dll提示内容不为空(其上所使用的"@视窗.输入"属性要求...
本帖最后由 mosheng 于 2024-12-3 22:24 编辑

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

(, 下载次数: 243)


(, 下载次数: 243)

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

  2. 包 火山.程序

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

  12.         showMMKV (root_dir, mmkv_id)

  13.         返回 (1)
  14.     }

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

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


  24.     }

  25.     #
  26. }
复制代码





作者: Xelloss0618    时间: 2024-12-3 23:47
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
提示: 作者被禁止或删除 内容自动屏蔽
作者: mosheng    时间: 2024-12-4 00:12
Xelloss0618 发表于 2024-12-3 23:47
DLL命令声明里不能写代码啊……
另外火山有封装MMKV

谢谢大佬
作者: mosheng    时间: 2024-12-4 00:29
Xelloss0618 发表于 2024-12-3 23:47
DLL命令声明里不能写代码啊……
另外火山有封装MMKV

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

  2. 包 火山.程序

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

  17.     #
  18. }
复制代码
这样子直接用,就解析出来了





欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4