以下是3个具有以下Character Set
支持的图书馆:
Lib A (支持Unicode和Multibyte)
Lib B (仅限多字节)
Lib C (仅限Unicode)
A 的功能在Unicode和Multibyte(例如: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
版本的函数而感到链接器错误。
要解决此问题,我可以创建 B 版本 B ,然后我可以在 C 中使用。
我的问题是,是否可以通过更改 Lib A 本身的内容来解决此链接器错误,这样我就不需要使 B 的 Unicode 版本?
答案 0 :(得分:0)
有人(在此论坛之外)建议我添加
string
在Lib A的头文件中。
将相关API的所有3个库中的xString
替换为#define SM_USE_UNICODE
db->query
是Lib C的头文件。
这样我就不需要制作Lib B的Unicode版本了 它实际上允许Lib C调用多字节版本的API 从unicode lib调用多字节API看起来很糟糕,但它确实有效。
答案 1 :(得分:-1)
如果C通过B访问A,那么如果B做的不仅仅是在C和A之间发送一个指针,那么所有三个人都更好地同意它们是用Unicode工作(大概是16位还是更大的代码单元)还是“多字节” (8位代码单元)。
在我看来,你的链接器错误试图阻止这种不匹配