Я добавляю свое решение, потому что я немного боролся с ним и не нашел его ни в одном из ответов.
Функция C ++ выглядит так:
int __stdcall DoSomething(char * _name);
Чтобы заставить его работать в Delphi, я объявляю следующую функцию
function DoSomething(name: PAnsiChar): integer; stdcall; external 'somedll.dll';
А потом, когда я делаю вызов, у меня есть функция, которая выглядит следующим образом:
var s: PAnsiChar;
begin
GetMem(s, 255);
DoSomething(s);
// s now contains the value returned from the C DLL
end;
Я пытался использовать PChar вместо PAnsiChar, но все, что я получаю взамен, - это мусор. Кроме того, если я объявляю функцию в Delphi с параметром, установленным в var , я получаю исключение при попытке прочитать ее.
Надеюсь, это кому-нибудь поможет ..