관리되는 (Delphi .NET) 함수에서 관리되지 않는 (Delphi의 Win32 DLL) 함수로 유니 코드 문자열을 전달 (마샬링) 할 수있는 방법에 대해 누구나 감사드립니다. .유니 코드 문자열을 관리되는 함수에서 관리되지 않는 함수로 전달하는 방법
관리되는 환경 (델파이 .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;
...
관리되지 않는 환경 (델파이는 Win32 DLL) :
library TM.PROFileConverter;
...
function ImportLineworksFromPROFile(FileName :String;
TargetFileNameDXF :String) :Integer; stdcall;
exports
ImportLineworksFromPROFile;
...
이 시간 내 주셔서 감사합니다.
또한 D2007이 PChar = PAnsiChar 인 마지막 버전 이었음을 주목할 필요가 있습니다. D2009에 유니 코드 지원이 추가되어 PChar가 PWideChar로 변경되었습니다. 업그레이드 할 경우 DllImport를 CharSet.Unicode를 사용하도록 변경해야합니다 (그렇지 않으면 ANSI를 유지하도록 DLL을 변경해야합니다). –