gpt4 book ai didi

c++ - 在库中混合使用 Unicode/Multibyte 版本

转载 作者:太空宇宙 更新时间:2023-11-04 14:29:28 24 4
gpt4 key购买 nike

这里有 3 个库支持以下字符集:
Lib A (支持Unicode和Multibyte)
Lib B(仅多字节)
Lib C(仅 Unicode)

A 有一个函数,在 Unicode 和多字节的情况下是不同的(例如:void func(string s)),它控制在 A 之一的头文件为:

#if defined(UNICODE) || defined(_UNICODE)
#define string wstring
#endif

B 使用A 的多字节版本。
C 使用B 的多字节版本。

现在我正在更改 C,它使用 void func(string s) 到上面定义的 B
编译 C 时,我得到 func链接器错误,因为它正在寻找函数的 wstring 版本。

为了解决这个问题,我还可以创建 BUnicode 版本,然后我可以在 C 中使用它。

我的问题是,这个链接器错误是否可以通过更改 Lib A 本身的内容来解决,这样我就不需要制作 BUnicode 版本?

最佳答案

有人(在这个论坛之外)建议我添加

#if defined(USE_MULTIBYTE) || defined(USE_UNICODE) 
#else
#if defined(UNICODE) || defined(_UNICODE)
#define USE_UNICODE
#endif
#endif

#if defined(USE_UNICODE)
typedef std::wstring xString;
#else typedef std::string xString;
#endif

在库A的头文件中。

将所有 3 个库中的 string 替换为 xString 以获取相关 API。
#define SM_USE_UNICODE是Lib C的头文件。

这样我就不需要制作 Unicode 版本的 Lib B。
它实际上允许 Lib C 调用多字节版本的 API。
从 unicode 库调用多字节 API 看起来很乱,但它确实有效。

关于c++ - 在库中混合使用 Unicode/Multibyte 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47430341/

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