在 wchar 模式下链接 pugixml 的错误

Linking errors for pugixml in wchar mode

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

我正在使用从 apt-get 获得的 Ubuntu 16.04 和 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 模式,我应该重建库吗?我在 the manual.

中找不到任何相关内容

Am I supposed to rebuild the library if I want to use wchar mode?

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