我用DELPHI写了一个非常简单的DLL做试验,让VB调用,
发现用除了PCHAR类型以外得所有类型做为传递参数在VB就能调用成功,可是一用PCHAR,
VB调用的时候老是关闭性错误!
请那位高人指点迷经(函数调用一定得有字符参数)
程序如下:
Delphi DLL
**********************************
library Project1;
uses
SysUtils,
Classes;{$R *.res}
function robtest(VAR buf:pchar):integer;stdcall;
begin
buf:='rob';
result:=2003;
end;exports
robtest;
begin
end.
*************************************************
VB 调用程序
Private Declare Function robtest Lib "c:\windows\desktop\dll\test\Project1.dll" (ByVal buf As String) As LongPrivate Sub Command1_Click()
Dim a As Integer
Dim bb As String
a = robtest(bb)
Text1.Text = Text1.Text + bb + ";" + Str(a)
End Sub
**************************************************
发现用除了PCHAR类型以外得所有类型做为传递参数在VB就能调用成功,可是一用PCHAR,
VB调用的时候老是关闭性错误!
请那位高人指点迷经(函数调用一定得有字符参数)
程序如下:
Delphi DLL
**********************************
library Project1;
uses
SysUtils,
Classes;{$R *.res}
function robtest(VAR buf:pchar):integer;stdcall;
begin
buf:='rob';
result:=2003;
end;exports
robtest;
begin
end.
*************************************************
VB 调用程序
Private Declare Function robtest Lib "c:\windows\desktop\dll\test\Project1.dll" (ByVal buf As String) As LongPrivate Sub Command1_Click()
Dim a As Integer
Dim bb As String
a = robtest(bb)
Text1.Text = Text1.Text + bb + ";" + Str(a)
End Sub
**************************************************
解决方案 »
- 报错:Not enough timer availible,怎么回事
- SocketConnection interface not supported
- 有关delphi的报表控件的问题?
- 怎么这个声音感觉有点延迟?
- Response.SendRedirect的问题?
- 高分求教一个关于BDE的问题?急!!!
- 偶用的table连接的access数据库,想请问用什么方法才能实现多字段查询
- delphi 使用sqlserver的递归在win7下正常,xp下错误,哪位大神知道怎么办啊
- 请大家帮帮我,键盘
- 很急的问题 关于stringgrid
- String1中包含有String2,如何从String1中删除String2,并返回删除后的结果? 在线等待...立即结贴!
- 如何让窗口始终得到焦点!
是DELPHI中function里用Var 声明的参数,在VB调用里不能加Byval
delphi里给PCHAR参数赋值时用,用个string类型变量倒一下
修改后
elphi DLL
**********************************
library Project1;
uses
SysUtils,
Classes;{$R *.res}
function robtest(VAR buf:pchar):integer;stdcall;
var
tempL:string;
begin
temp:='rob';
buf:=pchar(temp);
result:=2003;
end;exports
robtest;
begin
end.
*************************************************
VB 调用程序
Private Declare Function robtest Lib "c:\windows\desktop\dll\test\Project1.dll" (buf As String) As LongPrivate Sub Command1_Click()
Dim a As Integer
Dim bb As String
a = robtest(bb)
Text1.Text = Text1.Text + bb + ";" + Str(a)
End Sub
**************************************************