有关Delphi调用VC++DLL参数传递的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 bin2000
  • 开始时间 开始时间
B

bin2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我用VC++6.0写了个DLL,其中的函数为:
pascal int myMessage( char *myMsg, char *oMsg )
{
MessageBox( NULL, myMsg, NULL, MB_ICONEXCLAMATION );
oMsg = "你好";
return 0;
}
用途是显示一个对话框,内容是字串myMsg的值,并将“你好”作为返回参数传
递给oMsg

在Delphi中的声明为:
function myMessage( myMsg, oMsg: pchar ):integer
stdcall

external 'snmpdll.dll' name 'myMessage';

调用为:
procedure TForm1.Button3Click(Sender: TObject);
var
oMsg: string;
begin
setlength( oMsg, 255 );
oMsg := '';
myMessage('Hello Baby!', pchar(oMsg));
end;

编译通过,运行后发现传递过去的参数myMsg可以正常显示,可返回的参数oMsg的内容不
对,不是“你好”。请教各位大侠是怎么回事。
 
我用VC++6.0写了个DLL,其中的函数为:
pascal int myMessage( char *myMsg, char *oMsg )
{
MessageBox( NULL, myMsg, NULL, MB_ICONEXCLAMATION );
oMsg = "你好";
return 0;
}
用途是显示一个对话框,内容是字串myMsg的值,并将“你好”作为返回参数传
递给oMsg

在Delphi中的声明为:
function myMessage( myMsg, oMsg: pchar ):integer
stdcall

external 'snmpdll.dll' name 'myMessage';

调用为:
procedure TForm1.Button3Click(Sender: TObject);
var
oMsg: string;
begin
setlength( oMsg, 255 );
oMsg := '';
myMessage('Hello Baby!', pchar(oMsg));
end;

编译通过,运行后发现传递过去的参数myMsg可以正常显示,可返回的参数oMsg的内容不
对,不是“你好”。请教各位大侠是怎么回事。
 
pascal int myMessage( char *myMsg, char *oMsg )
{
MessageBox( NULL, myMsg, NULL, MB_ICONEXCLAMATION );
oMsg = "你好"
//这里不能这么返回,要用strcpy, 或者传递 char **
return 0;
}
 
后退
顶部