wchar 模式下 pugixml 的链接错误

Linking errors for pugixml in wchar mode

本文关键字:链接 错误 pugixml 模式 wchar      更新时间:2023-10-16

当我尝试在wchar模式下使用pugi构建二进制文件时,我收到大量链接器未定义的引用错误,暗示库中缺少某些函数的wchar_t版本。

我正在使用 Ubuntu 16.04 和我从 apt-get 获得的libpugixml-dev

下面是一个拒绝构建的示例代码:

#include <pugixml.hpp>
int main(int argc, char *argv[])
{
pugi::xml_node n;
n.set_name(L"");
return 0;
}

我用

g++ -o pugi_test main.cpp -std=c++11 -DPUGIXML_WCHAR_MODE -lpugixml

并得到

undefined reference to `pugi::xml_node::set_name(wchar_t const*)'

我还尝试将#define PUGIXML_WCHAR_MODE放在#include上方的main.cpp中,并在pugiconfig.hpp中取消注释相同的#define

如果我删除 wchar 的所有痕迹(L""""并删除-DPUGIXML_WCHAR_MODE(,构建将毫无障碍。

如果我想使用 wchar 模式,我应该重建库吗?我在手册中找不到任何相关内容。

如果我想使用 wchar 模式,我应该重建库吗?

是的。拥有这样PUGIXML_WCHAR_MODE宏是没有意义的,除非它控制库的编译(在我看来(。编译库和库的用户时都必须(取消(定义它。