C++写的dll,用delphi调用,不知道参数该怎么样转化?(100分)

  • 主题发起人 主题发起人 hb8069
  • 开始时间 开始时间
H

hb8069

Unregistered / Unconfirmed
GUEST, unregistred user!
dll中的函数
WORD MCS_ErrorMsg(
WORD _wErrNo,
BYTE *_bErrMsg
);
请问第二个参数在delphi中调用该声明什么类型?
 
Mcs_ErrorMsg(wErrNo: DWORD;var bErrMsg: Byte): DWORD;
试试看对不对。
 
PByte或PCHar都行。
 
function Mcs_ErrorMsg(wErrNo: DWORD;var bErrMsg: Byte): DWORD;
 
wErrNo: DWORD;var bErrMsg: Byte
 
MCS_ErrorMsg( _wErrNo :WORD, BYTE *_bErrMsg :pchar):WORD;stdcall;extern XXX.dll
 
还要看你用什么C++,不是随便用stdcall都可以的,VC与BC下用stdcall生成的DLL输出函数名是不一样的,VC下的命名规则为:
前缀‘_’+函数名+后缀‘@’+各个参数长度,所以,Exports时需要重新命名;
比较麻烦,干脆就在VC的DLL里的函数声明和Delphi里的调用都用cdecl就可以。
BC下就方便了,用stdcall进行DLL里的函数声明,Delphi里的调用也用stdcall。
 
我觉得yu_gao说得对,第二个参数是个字符串。所以应该用PChar。
========================================================
来自:yu_gao, 时间:2003-12-3 9:56:00, ID:2330231
PByte或PCHar都行。
========================================================
 
后退
顶部