游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1885|回复: 6

VB使用VC生成的dll的问题

[复制链接]

21

主题

136

帖子

165

积分

注册会员

Rank: 2

积分
165
发表于 2007-3-12 07:48:00 | 显示全部楼层 |阅读模式
extern "C"  _declspec (dllexport) float ComputeDigital(string list,int *flag,int length);
这是在VC中的原形
到VB中是
Private Declare Function ComputeDigital Lib "Compute.dll" (ByVal a As String, ByRef b As Long) As Double
它们是对应的吗?
怎么把VB中的string 传入VC生成的dll中? 我查了些资料,都不好使,大家有没有什么好方法

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2007-3-12 12:18:00 | 显示全部楼层

Re:VB使用VC生成的dll的问题

参数数量都不一样,怎么对应……
返回值也不一样……

21

主题

136

帖子

165

积分

注册会员

Rank: 2

积分
165
 楼主| 发表于 2007-3-12 15:45:00 | 显示全部楼层

Re:VB使用VC生成的dll的问题

哦,
c++中的string 和vb中的String是否能转化?
应该怎么样对应?

15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-3-12 18:02:00 | 显示全部楼层

Re:VB使用VC生成的dll的问题

vb.net的String不知道有米有获取其数据区的方法(转化为wchar_t*)。
这样需要更改C++接口,不使用string而是使用wchar_t* 和一个表示字符长度的变量来表示字符。
.net下的字符串一般是Unicode的,转化到C++中应该用wchar_t而不是char
如果你用的是vb,不是.net,就不太清楚了……

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2007-3-12 18:49:00 | 显示全部楼层

Re:VB使用VC生成的dll的问题

VB6的String就好办了,可以用直接用Strptr函数取得字符串的地址

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2007-3-13 13:16:00 | 显示全部楼层

Re:VB使用VC生成的dll的问题

注意(这个很恶心):

VB6编译器可以自动把VB用的BSTR转成C++用的LPSTR,就是char*。
在编写dll时,参数类型为char*即可。
在VB中声名为string即可。

但是,如果dll的参数是BSTR,反倒会出错,因为,VB编译器还是转换成LPSTR传过去。

21

主题

136

帖子

165

积分

注册会员

Rank: 2

积分
165
 楼主| 发表于 2007-3-25 20:56:00 | 显示全部楼层

Re:VB使用VC生成的dll的问题

多谢各位了,我的问题已经解决的了..
呵呵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 19:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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