dll中的函数如何返回字符串???
××××dll中的函数
function test():string;stdcall;
begin
result:='成功返回字符串';
end;
××××在VB中调用
Private Declare Function test Lib "Project1.dll" () As String
Private Sub Command1_Click()
MsgBox test
End Sub
这样会非法操作~~~该怎么办呢???
问题点数:20、回复次数:6Top
1 楼Ephesus(艾菲索斯)回复于 2005-03-11 13:34:44 得分 0
把String改为ShortString或Pchar类型Top
2 楼aqtata(魔非魔,道非道,善恶在人心)回复于 2005-03-11 13:49:57 得分 0
函数返回值吗,改了还是不行Top
3 楼DDGG(叮叮当当)回复于 2005-03-11 14:22:44 得分 0
从DLL中返回字符串到VB时,VB要首先分配内存,然后传进去:
××××dll中的函数
procedure test(s:pchar);stdcall;
begin
result:='成功返回字符串';
end;
××××在VB中调用
Private Declare Sub test Lib "Project1.dll" (s As String)
Private Sub Command1_Click()
Dim s As String*256
s = ""
test(s)
MsgBox s
End SubTop
4 楼DDGG(叮叮当当)回复于 2005-03-11 15:10:40 得分 20
代码有误,更正如下:(已通过测试)
××××dll中的函数 Project1.dpr
uses
SysUtils, Classes, Windows;
...
procedure test(s:pchar);stdcall;
var
A: string;
begin
A:='成功返回字符串';
CopyMemory(s, @A[1], Length(A));
end;
××××在VB中调用
Private Declare Sub test Lib "Project1.dll" (ByVal s As String)
Private Sub Command1_Click()
Dim s As String * 256
s = ""
test(s)
MsgBox s
End Sub
Top
5 楼aqtata(魔非魔,道非道,善恶在人心)回复于 2005-03-11 15:11:17 得分 0
我的是函数啊,不是过程,我试了也不行,还是非法操作了Top
6 楼aqtata(魔非魔,道非道,善恶在人心)回复于 2005-03-11 15:19:57 得分 0
第2次的可以了,不过就是那字符串后面都是空白了,呵呵,结帐Top




