读书人

Delphi 六调用C++写的DLL全局变量当

发布时间: 2013-01-08 14:02:14 作者: rapoo

Delphi 6调用C++写的DLL,全局变量当参数出错
Delphi 调用C++写的DLL,当用全局变量当参数时,运行出错
C++ :函数原形
int WINAPI RmuOpenAndConnect (HANDLE &hCom, char* cPort, UCHAR flagCrc);

DELPHI6 函数申明
Function RmuOpenAndConnect (Hcomm:thandle; Cport:Pchar; flagCrc: byte ):integer;stdcall;external 'RMU900_API.dll' ;


DELPHI6 运行成功( Hc:thandle; 局部变量)
procedure TFrmMain.Button1Click(Sender: TObject);
var Cport:Pchar;
flagCrc:byte;
i,j:integer;
Hc:thandle;
begin
Cport:=pchar('com3');
flagCrc:=0;
if RmuOpenAndConnect(Hc,Cport,flagCrc)=1 then showmessage('Open OK') else howmessage('false');

end;

DELPHI6 运行出错( Hc:thandle; 改为全局变量)
procedure TFrmMain.Button1Click(Sender: TObject);
var Cport:Pchar;
flagCrc:byte;
i,j:integer;

begin
Cport:=pchar('com3');
flagCrc:=0;
if RmuOpenAndConnect(Hc,Cport,flagCrc)=1 then showmessage('Open OK') else howmessage('false');

end;

[解决办法]
HANDLE &hCom这个是c++引用类型
Function RmuOpenAndConnect (var Hcomm:thandle; Cport:Pchar; flagCrc: byte ):integer;stdcall;external 'RMU900_API.dll' ;
这样试试

读书人网 >.NET

热点推荐