Я по-настоящему ценю любую помощь в отношении того, как строка Unicode может быть передана (маршализирована) из управляемой (Delphi .NET) в неуправляемую (Delphi's Win32 DLL) функцию ,Как переносить строки Unicode из управляемой в неуправляемую функцию
Управляемая среда (Delphi .NET):
...
interface
...
const TM_PRO_CONVERTER = 'TM.PROFileConverter.dll';
function ImportLineworksFromPROFile(FileName :String;
TargetFileNameDXF :String): Integer;
...
implementation
...
[DllImport(TM_PRO_CONVERTER, EntryPoint = 'ImportLineworksFromPROFile',
CharSet = CharSet.Ansi, SetLastError = True,
CallingConvention = CallingConvention.StdCall)]
function ImportLineworksFromPROFile(FileName :String;
TargetFileNameDXF :String): Integer; external;
...
Неуправляемые среды (Delphi, Win32 DLL):
library TM.PROFileConverter;
...
function ImportLineworksFromPROFile(FileName :String;
TargetFileNameDXF :String) :Integer; stdcall;
exports
ImportLineworksFromPROFile;
...
Спасибо за ваше время.
Возможно, также стоит отметить, что D2007 была последней версией, где PChar = PAnsiChar. D2009 добавила поддержку Unicode, которая изменила PChar на PWideChar. Если вы обновляете, DllImport затем должен быть изменен для использования CharSet.Unicode (или вам придется изменить DLL, чтобы оставаться ANSI). –