gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:54:09 27 4
gpt4 key购买 nike

我用 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);

两者都在 Release模式下工作。
但在 Debug模式下 Foo2 被中止。

请指出哪里出了问题。

最佳答案

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

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

关于delphi - 使用许多参数从 C++\CLI 调用 Delphi DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7794248/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com