gpt4 book ai didi

.net - 如何将 Unicode 字符串从托管函数传递到非托管函数

转载 作者:行者123 更新时间:2023-12-03 19:45:14 24 4
gpt4 key购买 nike

对于如何将 Unicode 字符串从托管(Delphi .NET)传递(编码)到非托管(Delphi 的 Win32 DLL)函数,我将非常感谢任何人的帮助。

托管环境(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;

...

感谢您的时间。

最佳答案

.Net,因此 .Net 的 Delphi 无法编码 win32 Delphi 的 AnsiString。它确实知道如何编码 PChar。将 win32 参数更改为 PChar 应该可以。

function ImportLineworksFromPROFile(FileName          :PChar;
TargetFileNameDXF :PChar) :Integer; stdcall;

PS:非托管函数使用ANSI编码,不是Unicode。如果您希望非托管代码处理 unicode,则应在托管端使用 PWideChar 或 WideString 而不是 PChar 和 CharSet = CharSet.Unicode。

关于.net - 如何将 Unicode 字符串从托管函数传递到非托管函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2941570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com