Gemanagte Typen ala String, Interfaces oder dynamische Arrays besser niemals als OUT-Parameter deklatieren, sondern nur als VAR.
Und dann ist dieses C++-Char-Array kein Delphi-String, weswegen dein Code nicht funktionieren kann, wenn du inkompatible Typen auf beiden Seiten (
DLL und EXE) hast.
Wenn das aber deine
DLL ist und du unbedingt "Strings" haben willst, dann nimm in Delphi den WideString, denn dieser Typ kapelst den BSTR der OleAuth32.dll, welche du auch im C++ nutzen kannst.
SysAllocStringLen usw.
Außerdem, wenn du gemaagte Typen ala String über Modulgrenzen (EXE/
DLL) hinweg nutzen willst, dann muß du auch den Speichermanager vom Delphi überall gemeinsam nutzen.
ShareMem,
SimpleShareMem und Dergleichen