Rre*_*Cat 7 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;
Run Code Online (Sandbox Code Playgroud)
他们每个人都会回来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;
Run Code Online (Sandbox Code Playgroud)
初始化LoadLibrary和GetProcAddress功能.用法:TestFoo1(0,0)和TestFoo2(0,0,0);
两者都在发布模式下工作.
但在调试模式下,Foo2正在中止.
请告知错误.
很可能您的调用约定不匹配。stdcall将Delphi 中的更改为cdecl与您的 C++/CLI 代码相匹配。
顺便说一句,如果您尝试从 DLL 返回一个不是存储在数据段只读内存中的文字的值,则需要小心字符串的生命周期。但这不是这里的问题,因为它PChar('Test')与 DLL 具有相同的生命周期。
| 归档时间: |
|
| 查看次数: |
564 次 |
| 最近记录: |