gpt4 book ai didi

c - 如何将 UTF-8 字符串从 Delphi 传递到 DLL C 外部函数?

转载 作者:行者123 更新时间:2023-12-02 15:23:17 27 4
gpt4 key购买 nike

我正在从 Delphi 调用 Visual Studio 编译的 DLL 中的 C extern 函数。 DLL 方法依次调用 C++ 方法,该方法采用 C++ 字符串类型作为参数。 Delphi 端的字符串是 UTF-8 编码的(没有 BOM)。我需要确保采用字符串类型的 C++ 方法获取 UTF-8 编码的字符串。

我可以修改DLL源代码。我的问题:

我在Delphi端的UTF-8字符串是字符串类型。 C extern 方法应该采用什么类型? PChar、PWideChar?以及如何将其转换为 C++ 字符串类型?

注意:我无法首先将 UTF-8 字符串转换为 AnsiString,因为编码存储了一些必须保留的希腊字母。 C++ 端将复制 Delphi 字符串并处理任何已分配内存的处置。

Delphi端(使用XE6):

mystr : string;

callCExternMethod (mystr) // cast to what?

C++ 结束(使用 VS 2013):

void callCExternMethod (????? mystr) {

// convert mystr to C++ string type

callCPlusPlusMethod (takes C++ string type)
}

最佳答案

在 Delphi 端,参数是 PAnsiChar,您可以这样传递:PAnsiChar(Utf8String(str))

在 C++ 端,您收到的参数为 const char*

显然您需要确保调用约定匹配。

关于c - 如何将 UTF-8 字符串从 Delphi 传递到 DLL C 外部函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37034466/

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