在 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
宏是没有意义的。在编译库和库的用户时都必须(未)定义它。
当我尝试在 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
宏是没有意义的。在编译库和库的用户时都必须(未)定义它。