递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] 请教:VS C++如果调用火山DLL?

[复制链接]

98

主题

643

帖子

4071

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4071
跳转到指定楼层
楼主
发表于 2024-1-22 13:14:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
比如火山DLL 输出一个方法,该方法的参数为文本型或变整数,那么c++如何传入和获取文本,整数传入传出我搞定了,文本的传入和传出没有,谁会,请帮助写了调用的例子。
回复

使用道具 举报

419

主题

1917

帖子

7807

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7807
QQ
12#
发表于 2024-1-23 01:37:26 | 只看该作者
摘星揽月 发表于 2024-1-22 19:46
大佬,可否告知哪个api,我不太熟悉

如果不好确定 缓冲区长度。
也可以参考win32 API.
执行2此,
当指针=0时,判断len参数 是否为可写指针,
若为指针,在火山 内先算一遍具体长度。
再把这个长度写道len参数里。

也不知道我有没有讲清楚。
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

419

主题

1917

帖子

7807

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7807
QQ
11#
发表于 2024-1-23 01:34:34 | 只看该作者
摘星揽月 发表于 2024-1-22 19:46
大佬,可否告知哪个api,我不太熟悉

不需要什么API啊

C++ 端  直接给参  缓冲区地址。
火山端  直接往参数 里写数据。

不过,正常来讲,你至少给2个参数,第一个是指针 第二个是长度,
具体的话,可以参考:getwindowtext  
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

98

主题

643

帖子

4071

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4071
10#
 楼主| 发表于 2024-1-22 21:11:45 | 只看该作者
hcwanz 发表于 2024-1-22 20:32
//定义u16string所在头文件,应该是这个
#include
//这里是火山传出的文本指针。

感谢感谢,最终实现和你这差不多。搞定了
回复

使用道具 举报

75

主题

1160

帖子

5248

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5248
9#
发表于 2024-1-22 20:32:58 | 只看该作者
本帖最后由 hcwanz 于 2024-1-22 20:34 编辑

//定义u16string所在头文件,应该是这个
#include <string>
//这里是火山传出的文本指针。
wchar* 火山文本指针;

//定义一个u16string的变量,然后调用构造方法,传入火山传出的文本指针。
u16string 变量(火山文本指针);

//这样u16string类型的变量里,存储的就是火山传出的文本了。
回复

使用道具 举报

98

主题

643

帖子

4071

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4071
8#
 楼主| 发表于 2024-1-22 20:21:29 | 只看该作者
hcwanz 发表于 2024-1-22 20:17
传输的时候传文本指针。如果是用c++的u16string,直接在构造函数(或着用‘=’赋值)里用指针就行。(火山 ...

能搞个c++调用的demo不
回复

使用道具 举报

75

主题

1160

帖子

5248

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5248
7#
发表于 2024-1-22 20:17:07 | 只看该作者
本帖最后由 hcwanz 于 2024-1-22 20:19 编辑
摘星揽月 发表于 2024-1-22 19:46
大佬,可否告知哪个api,我不太熟悉

传输的时候传文本指针。如果是用c++的u16string,直接在构造函数(或着用‘=’赋值)里用指针就行。(火山是utf16,string好像是utf8,不能直接用,至少要转换一下,或者用u16string)
火山里就是用指针到文本(或者添加指针文本)

如果是不支持指针赋值的,就把文本长度也一并传上,用的时候用内存复制就行。
回复

使用道具 举报

98

主题

643

帖子

4071

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4071
6#
 楼主| 发表于 2024-1-22 19:46:37 | 只看该作者
urenai 发表于 2024-1-22 14:01
具体方法只有一种,参考 Win32 API 的写法。

调用DLL api的时候,给一个缓冲区地址(够长),火山函数得到 ...

大佬,可否告知哪个api,我不太熟悉
回复

使用道具 举报

53

主题

628

帖子

2662

积分

禁止发言

积分
2662
5#
发表于 2024-1-22 18:01:04 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

98

主题

643

帖子

4071

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4071
地板
 楼主| 发表于 2024-1-22 15:51:44 | 只看该作者
Xelloss0618 发表于 2024-1-22 13:50
火山导出的 DLL 函数,如果参数是文本型,会变为文本指针 const WCHAR *
但只支持传入文本到火山,就是 C++ ...

大佬,可否告知哪个api,我不太熟悉
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-24 10:39 , Processed in 0.098799 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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