我有一个使用两个第三方库的项目,这两个库都在其头文件中使用了 TCHAR。不幸的是,一个库被编译为多字节(称为库 a),而另一个库被编译为 Unicode(称为库 b)。
现在我理解它的方式是 TCHAR 被预编译器替换为 wchar 或 char 取决于构建选项。因此,当编译库 a 时,任何采用 TCHAR 类型参数的方法都被设置为期望 char 类型的参数,而库 b 中的方法被设置为期望 wchar 类型的参数。
不幸的是,我的消费应用程序也必须选择一个字符集。如果我选择 Unicode,那么我为库 a 包含的头文件告诉我该方法需要一个 wchar,因为当我在头中编译 TCHAR 时,它们被解释为 wchar。这包括在结构内部定义的 TCHARS。我已经在实践中确认了这种行为,当我分配并传递一个 TCHAR 缓冲区时,我得到了垃圾,因为它用多字节数据填充了我的 wchar 缓冲区。
我的问题是:有没有一种干净的方法可以在同一个应用程序中使用这两个库?我在使用这些库的方式上可能做错了吗?