递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 150|回复: 4
打印 上一主题 下一主题

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

[复制链接]

2

主题

29

帖子

228

积分

中级会员

Rank: 3Rank: 3

积分
228
跳转到指定楼层
楼主
发表于 前天 22:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mosheng 于 2024-12-3 22:24 编辑

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







  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. }
复制代码




**截图_20241203220125.png (178.49 KB, 下载次数: 3)

**截图_20241203220125.png
回复

使用道具 举报

26

主题

1919

帖子

6995

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6995
沙发
发表于 前天 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文本指针>)
}

评分

参与人数 1金钱 +10 收起 理由
mosheng + 10 很给力!

查看全部评分

回复

使用道具 举报

50

主题

577

帖子

2515

积分

金牌会员

Rank: 6Rank: 6

积分
2515
板凳
发表于 前天 23:57 | 只看该作者
本帖最后由 呵呵仙8 于 2024-12-4 00:07 编辑

1,dll声明错误,声明下不应该存在代码!
2,火山文本型是一个类,所以.你只能用到的就是文本指针.
3,火山文本型的文本是w文本的,你c的文本指针,很明显是A码文本指针.
如果你不知c的数据类型在中文叫什么.可以装个炫-语-言复制c代码过去就知是什么鬼了!





回复

使用道具 举报

2

主题

29

帖子

228

积分

中级会员

Rank: 3Rank: 3

积分
228
地板
 楼主| 发表于 昨天 00:12 | 只看该作者
Xelloss0618 发表于 2024-12-3 23:47
DLL命令声明里不能写代码啊……
另外火山有封装MMKV

谢谢大佬
回复

使用道具 举报

2

主题

29

帖子

228

积分

中级会员

Rank: 3Rank: 3

积分
228
5#
 楼主| 发表于 昨天 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. }
复制代码
这样子直接用,就解析出来了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-12-5 10:52 , Processed in 0.090708 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表