如何将字符串从c ++传递给delphi

时间:2016-04-20 12:34:22

标签: c++ delphi

我是delphi的新手

我在delphi中有以下导出函数:

function MyFunction(var FirstParam: PChar; var Second: PChar ): Boolean; export; stdcall;

和c ++调用函数是这样的:

typedef bool(*MYFUNC) (char *, char*);

但我得到以下例外:

Unhandled exception at 0x76C1F117 (user32.dll) in MyApp.exe: 0xC0000005: Access violation reading location 0x66646664.

应该是什么原因?,你的回复会对我有所帮助。

非常感谢。

1 个答案:

答案 0 :(得分:0)

function MyFunction(var FirstParam: PChar; var Second: PChar ): Boolean; export; stdcall;

通过引用传递指针参数(因为var),

typedef bool(*MYFUNC) (char *, char*);

按值传递它们。你必须使签名匹配。

您还必须匹配调用约定 - Delphi函数显式标记为stdcall,默认情况下C ++函数可能为cdecl

更新:如果我正确理解您的评论,您必须将C ++代码改编为Delphi端。这可能如下所示:

typedef bool __stdcall(*MYFUNC) (char*&, char*&);