如何从C ++ dll返回字符串数组,然后该函数将由Delphi应用程序调用。
我试过了:
C ++ dll
#include <windows.h>
#include <vector>
#include <string>
using namespace std;
extern "C"
{
__declspec( dllexport ) void arrayStr(vector<string> s)
{
s.push_back("111");
s.push_back("222");
s.push_back("333");
}
}
的Delphi
procedure arrayStr(StrMem : TStringList); cdecl; external 'arrayStr.dll';
...
var
StrMem : TStringList;
i : integer;
begin
StrMem := TStringList.Create;
arrayStr(StrMem);
for i := 0 to StrMem.Count-1 do
begin
ShowMessage(StrMem[i]);
end;
StrMem.Free;
end;
答案 0 :(得分:1)
TStringList
(Delphi)与C ++ STL容器不兼容。
您应该执行以下操作:
C / C ++方面:
void __stdcall Func(char **strings, int count);
德尔福方面:
type PPAnsiChar = ^PAnsiChar;
procedure Func(ArrayOfStrings: PPAnsiChar; CountOfArray: Integer); stdcall;