从Delphi程序调用C DLL

时间:2013-02-18 16:23:51

标签: delphi dll parameters type-conversion

在我的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的正确程序是什么?

1 个答案:

答案 0 :(得分:1)

LPCSTRLPSTR对应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,所以从那开始。