使用许多参数从C ++ \ CLI调用Delphi DLL

时间:2011-10-17 13:12:35

标签: delphi c++-cli delphi-2010

我用Delphi 2010构建的DLL有两种方法:

function Foo1(a, b: Integer):PChar; export; stdcall;
function Foo2(a, b, c:Integer):PChar; export; stdcall;

exports Foo1, Foo2;

每个人都会返回Result := PChar('Test')

我的C ++ \ CLI代码

标题

中的

typedef const wchar_t* (*pFUNC1)(int a, int b);
pFUNC1 TestFoo1;

typedef const wchar_t* (*pFUNC2)(int a, int b, int c);
pFUNC2 TestFoo2;

LoadLibraryGetProcAddress函数初始化。 用法:TestFoo1(0,0)TestFoo2(0,0,0);

两者都在发布模式下工作 但是在调试模式下,Foo2正在中止。

请告知错误。

1 个答案:

答案 0 :(得分:4)

您很可能会调用约定不匹配。将Delphi中的stdcall更改为cdecl以匹配您的C ++ / CLI代码。

顺便说一句,如果你试图从DLL中返回一个不是存储在数据段中只读存储器中的文字的值,则需要小心字符串的生命周期。但这不是问题,因为PChar('Test')与DLL具有相同的生命周期。