首页
社区
课程
招聘
关于vb调用C编写的dll函数返回字符串的问题[求助]
发表于: 2005-12-24 17:02 6991

关于vb调用C编写的dll函数返回字符串的问题[求助]

2005-12-24 17:02
6991
有一个C编写的DLL链接库
其中一个函数返回字符串
char * WmppAPi (Int wChnlNo)
我在VB中调用的时候如下声明
Private Declare Function WmppAPi "tvll.dll" (ByVal wChnlNo As Long) As String

Dim temp_str As String
temp_str =  WmppAPi(1)

为什么temp_str是空的
怎样在VB里获得C返回的字符串函数
请大侠们指教

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 176
活跃值: (117)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
自己顶一下吧
2005-12-25 19:52
0
雪    币: 176
活跃值: (117)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
自己写了一个函数测试发现vb下调用c写的dll返回字符串函数确实存在问题请高手解答

char * __stdcall RT_Str()
{
return ("Hello World!");
}

在vb下如下调用
Private Declare Sub RT_Str "mydll.dll" () As String

MsgBox RT_Str()

结果弹出的消息框是空的
请高手分析和解答
2005-12-26 15:49
0
雪    币: 176
活跃值: (117)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
再顶
还没有解决
2005-12-28 17:45
0
雪    币: 176
活跃值: (117)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
再顶~~~
2005-12-31 10:21
0
雪    币: 343
活跃值: (611)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
6
2005-12-31 10:28
0
雪    币: 214
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
VB下的字符串格式和VC中的char有些不同的
具体参考askpro里的解答:

直接返回char *是不行的,VB不支持这种做法。正如你在资料中看到,大多数都是在VB中先给字符串分配空间,再传递给VC,在DLL中可以修改字符串,但不能超过VB中分配的空间。如果你希望直接返回字符串,必须使用BSTR类型,这实际上就是VB中的字符串所使用的类型。下面是一个简单的例子:
     
     EXTERN_C BSTR WINAPI RetStr()
     {
     char *str="1234567890";
     return SysAllocString((BSTR)str);

或者参考一下VB下调用GetComputerName的方法.
2005-12-31 10:28
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 larblue 发布
自己写了一个函数测试发现vb下调用c写的dll返回字符串函数确实存在问题请高手解答

char * __stdcall RT_Str()
{
return ("Hello World!");
........


Private Declare Function RT_Str "mydll.dll" () As String
2005-12-31 17:59
0
游客
登录 | 注册 方可回帖
返回
//