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

我有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正在中止。

请告知什么是错误的。


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

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

链接地址: http://www.djcxy.com/p/55611.html

上一篇: Call Delphi DLL from C++\CLI with many parameters

下一篇: How to document a parameter that expects a constant