社区
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) 不行
...全文
96
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
作业
写回复
配置赞助广告
用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++中分配空间,容易引起内存泄漏之类的问题。
qingye2008
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 *。
dll
反编译成C#,
VB
,
C++
源代码的利器
一款比较强大的反编译工具,可用来查看
DLL
中的资源和代码文件
MediaInfo_
DLL
MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件。这是它的
Dll
,通过
Dll
可以把它的功能嵌入JAVA,
C++
,
VB
等等工程中
DirectX修复工具 V3.0标准版
由于绝大多
数
软件运行时需要
c++
的支持,并且
c++
的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统中的
c++
组件。V3.0版本使用了全新的
c++
扩展包,可以大幅提高工业软件修复成功的概率。...
DirectX修复工具 V3.3增强 绿色版
由于绝大多
数
软件运行时需要
c++
的支持,并且
c++
的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统中的
c++
组件。自V3.2版本开始使用了全新的
c++
扩展包,可以大幅提高工业软件修复成功的...
Oracle 10g 10.2.0.1 的ole db 驱动
Oracle OLE DB驱动支持多种编程语言,包括但不限于Visual Basic (
VB
),Visual Basic .NET (
VB
.NET),
C++
,以及使用ADO(ActiveX Data Objects)的其他语言。在描述中提到的"
vb
ado 方式连接字符串",指的是使用
VB
...
VB基础类
7,785
社区成员
197,585
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章