VB调用VC编写的DLL函数时,无法返回Char*类型的参数值????我该怎么办??5555555555555

green312 2006-03-27 01:42:19
斑竹:
向大家请教有关VB调用VC编写的DLL函数时遇到的问题,还请大家不吝赐教。
我的源码是这样写的:

VC++中编写的Dll文件:
.h头文件中的声明:
void __stdcall test(char* name,char* ver);
.def文件中的出口:
test @1
.cpp文件中的函数:
void __stdcall test(char* name,char* ver)
{
char str1[]="***人名";
char str2[]="Mike";
name=str1;
ver=str2;
}

VB中:
声明:
Public Declare Sub test Lib "test.dll" (ByVal name As String, ByVal ver As String)
窗体中的函数:
Private Sub btnInfo_Click()
Dim name As String
Dim ver As String
test name, ver
lblInfo.Caption = name & ver
MsgBox name & ver, vbExclamation, "432323@#$@#@#$@$#"

end Sub

问题出现了:在VB中调用test函数,为获得name 与 ver字符串值,但获取的值始终都是空,请问各位在VB中我该如何获得“***人名”与“Mike”的值。

...全文
423 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hax123 2006-04-05
  • 打赏
  • 举报
回复
顶一下
caiso 2006-03-30
  • 打赏
  • 举报
回复
源码交换群:22608639
ft1000 2006-03-28
  • 打赏
  • 举报
回复
可以试试 SafeArray , 应该行, 需要例子PM我.
zlt982001 2006-03-28
  • 打赏
  • 举报
回复
char* 要用 BYTE()
byref byte()
green312 2006-03-28
  • 打赏
  • 举报
回复
没有人进来,不过我的问题已经解决了
我要结贴了!
homezj 2006-03-28
  • 打赏
  • 举报
回复
倒!慢了7秒!
homezj 2006-03-28
  • 打赏
  • 举报
回复
这样写

声明:
Public Declare Sub test Lib "test.dll" (ByVal name As String, ByVal ver As String)
窗体中的函数:
Private Sub btnInfo_Click()
Dim pname As String
Dim pver As String
pname=string(256,0)
pver=string(256,0)
test name, ver
pname=left$(pname,instr(1,pname,vbnullchar)-1)
pver=left$(pver,instr(1,pver,vbnullchar)-1)
lblInfo.Caption = pname & pver
MsgBox pname & pver, vbExclamation, "432323@#$@#@#$@$#"

end Sub
rainstormmaster 2006-03-28
  • 打赏
  • 举报
回复
//问题出现了:在VB中调用test函数,为获得name 与 ver字符串值,但获取的值始终都是空,请问各位在VB中我该如何获得“***人名”与“Mike”的值。

这是你没有为字串分配缓冲区的缘故

Public Declare Sub test Lib "test.dll" (ByVal name As String, ByVal ver As String)
窗体中的函数:
Private Sub btnInfo_Click()
Dim name As String
Dim ver As String
name=space(260)(或者用string函数分配)
ver=string(260,chr(0))
test name, ver
'还要对字串进行处理,这个问题你应该会,就不写了,不会的话,提示:用instr和left
lblInfo.Caption = name & ver
MsgBox name & ver, vbExclamation, "432323@#$@#@#$@$#"

end Sub
green312 2006-03-28
  • 打赏
  • 举报
回复
to ft1000:
你好,我在Csdn上给你发了一个消息,请你给我回复,谢谢!
green312 2006-03-27
  • 打赏
  • 举报
回复
楼上的两位,我试过了,不行呀!
faysky2 2006-03-27
  • 打赏
  • 举报
回复
把ByVal改为ByRef,或直接去掉ByVal
winehero 2006-03-27
  • 打赏
  • 举报
回复
'去掉Byval
Public Declare Sub test Lib "test.dll" (name As String, ver As String)

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧