在我的Delphi代码中,我必须使用以下原型调用DLL的函数(用Visual C编写):
int PWFunc(LPCSTR szName, int nWidth, int nHeight, LPCSTR szFileName)
如何将Delphi AnsiString变量(对于Name和FileName)转换为函数调用的正确类型参数(LPCSTR szName和szFileName)? 我知道VC LPCSTR类型对应于Delphi PAnsiChar类型,但将AnsiString转换为PAnsiChar的正确程序是什么?
答案 0 :(得分:1)
LPCSTR
和LPSTR
对应PAnsiChar
,因此您使用的是:
function PWFunc(szName: PAnsiChar; nWidth, nHeight: Longint;
szFileName: PAnsiChar): Longint; cdecl { or stdcall, see documentation };
external 'somedll.dll' name 'PWFunc';
你称之为:
X := PWFunc(PAnsiChar(AnsiString(SomeName)), 17, 33,
PAnsiChar(AnsiString(SomeFileName)));
您的函数是stdcall
还是dcecl
取决于编译器设置。阅读文档。如果有疑问,请尝试两者。它看起来像cdecl
,所以从那开始。