【发布时间】:2013-04-19 10:32:34
【问题描述】:
我目前在动态导入 Delphi DLL 时遇到问题。 Delphi DLL 函数声明如下:
function TEST() : PChar; cdecl;
begin
Result := '321 Test 123';
end;
在 C++ 中我这样称呼它:
typedef char *TestFunc(void);
TestFunc* Function;
HINSTANCE hInstLibrary = LoadLibrary("Test.dll");
if (hInstLibrary)
{
Function = (TestFunc*)GetProcAddress(hInstLibrary, "TEST");
if (Function)
{
printf("%s", Function());
}
}
问题是我只收到字符串的第一个字母。 如何告诉 C++ 字符串在第一个字符之后没有结束?
谢谢
【问题讨论】:
-
哪个版本的delphi?您需要知道 char 是 1 字节还是 2 字节。
-
或者尝试使用 PAnsiChar。
-
我正在使用 Delphi Xe2
-
哇。 PAnshiChar 正是我想要的!非常感谢!
-
@user2227015 这只能解决您的一个问题。另一个问题更难解决。
标签: c++ delphi delphi-xe2