2

在我的 Delphi 代码中,我必须使用以下原型调用 DLL 的函数(用 Visual C 编写):

int PWFunc(LPCSTR szName, int nWidth, int nHeight, LPCSTR szFileName)

如何将 Delphi AnsiString 变量(用于名称和文件名)转换为函数调用的正确类型参数(LPCSTR szName 和 szFileName)?我知道 VC LPCSTR 类型对应于 Delphi PAnsiChar 类型,但是将 AnsiString 转换为 PAnsiChar 的正确程序是什么?

4

1 回答 1

2

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我,所以从那个开始。

于 2013-02-18T16:55:56.143 回答