社区
VB基础类
帖子详情
vb调c++ dll如何传参数
qwpacs
2009-09-02 10:28:57
c++原型
void XXXX (unsigned char *i_xml,unsigned char **o_xml)
//i_xml是字符串指针,o_xml是字符串指针地址--在c++中分配空间。
用Private Declare Sub XXXX Lib "YYY.dll" (ByVal strXMLIN As String, ByRef strXMLOUT As String) 不行
...全文
125
7
打赏
收藏
vb调c++ dll如何传参数
c++原型 void XXXX (unsigned char *i_xml,unsigned char **o_xml) //i_xml是字符串指针,o_xml是字符串指针地址--在c++中分配空间。 用Private Declare Sub XXXX Lib "YYY.dll" (ByVal strXMLIN As String, ByRef strXMLOUT As String) 不行
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Tiger_Zhao
2009-09-02
打赏
举报
回复
1)用 CopyMemory 从 指针的指针 中取得 指针
2)用 lstrlen 取得长度
3)用 VB 的 Space() 函数分配字符串空间
4)用 lstrcpy 复制字符串。
但是
,c++中分配的字符串没有释放!
qwpacs
2009-09-02
打赏
举报
回复
现在传回的值是一串数字,头大啊。
qwpacs
2009-09-02
打赏
举报
回复
[Quote=引用 2 楼 tiger_zhao 的回复:]
strXMLOUT 可以用 Long 表示指针。
但是不建议在c++中分配空间,容易引起内存泄漏之类的问题。
[/Quote]
是啊,可以用long传回指针,但传回的指针如何转回字符串,程序里要用,请指教?
Tiger_Zhao
2009-09-02
打赏
举报
回复
strXMLOUT 可以用 Long 表示指针。
但是不建议在c++中分配空间,容易引起内存泄漏之类的问题。
xzz1008
2009-09-02
打赏
举报
回复
用long
Tiger_Zhao
2009-09-02
打赏
举报
回复
VB 调用 API 会自动对字符串参数进行 Unicode-Ansi 转换,见这个
帖子
。
lyserver
2009-09-02
打赏
举报
回复
string不是unsigned char *,而是BSTR,一是二者编码不同,unsigned char *是ANSI编码,string是UNICODE编码,二是二者内存布局不同,unsigned char *是直接指向字符串,并以"\0"结束,而string指向字符串内存后移4个字节后的地址,前4个字节用来表示string长度,没有使用"\0"表示结束,换句话说,unsigned char *不能包含"\0"符号,而string可以包含一个或多个"\0"。
此外,还需要注意string的内存释放,如果一定要传入string,则不能在dll里释放该内存,否则会导致两次内存释放,而出现未知错误。
当然,最好的办法是要么使用byte()来表示unsigned char *,要么修改dll中的unsigned char *为BSTR,然后在dll内部转换BSTR为unsigned char *。
VB
调
用
c++
写的
Dll
的一点总结
本文总结了在
VB
中
调
用
C++
编写的
DLL
时遇到的问题及解决办法,包括自定义
数
据类型不能ByVal传递、函
数
指针的传递、回
调
函
数
的使用限制、字符串传递和
VB
中文件处理的注意事项。解决这些问题的关键在于理解接口定义和
VB
的特性,以确保兼容性和稳定性。
C++
写的
DLL
,传结构给
VB
用
博客主要讲述
VB
调
用
C++
编写的
DLL
时的注意事项,如
C++
导出函
数
最好用标准
数
据类型,
VB
传结构给
DLL
时的写法,声明
DLL
函
数
时路径问题。还提到用结构封装
数
据、制定规范处理多操作,以及建议使用接口编程保障
数
据安全。
VB
等语言与
C++
DLL
的通讯
本文详细探讨了
VB
、Pascal和Fortran如何
调
用
C++
编译的
DLL
,重点讨论了函
数
调
用约定和名字修饰的影响。通过例子展示了不同语言之间的
调
用约定差异,如
C++
中的__stdcall和名字修饰,以及如何在
VB
中使用别名或DEF文件来模拟PASCAL约定。还涵盖了字符串和
数
组的传递,以及使用AddressOf存储函
数
指针的方法。
vb
下
调
用
C++
dll
的方法
VB
中
调
用
C++
动态链接库(
DLL
)的函
数
需要通过Declare语句进行声明。根据函
数
是否有返回值,可以声明为Sub或Function。在声明时,需要指定函
数
名、
DLL
库名及返回值类型。例如,可以声明一个Enum来表示变量类型,并通过Declare Function声明无参函
数
。当UI上按钮过多时,可通过添加新Form来改善界面,点击按钮后显示新Form。
VB
和Dev-
C++
合作——手把手教你写GUI程序
这篇教程适合C语言初学者,讲解如何使用
VB
设计GUI界面,结合Dev-
C++
创建
DLL
进行后台处理。通过
VB
调
用
DLL
中的函
数
,实现GUI程序的功能。步骤包括:设置Dev-
C++
生成
DLL
,
VB
设计界面,声明并
调
用
DLL
函
数
。
VB基础类
7,789
社区成员
197,583
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章