poco c++ 静态链接问题与未定义的符号引用

2024-01-08

我正在尝试链接到 POCO C++ 库的静态版本,如下所示:

g++ BCCMain.o -L$_POCO_LIBS -Wl,-Bstatic $_POCO_LIBS/libPocoFoundation.a $_POCO_LIBS/libPocoUtil.a $_POCO_LIBS/libPocoXML.a $_POCO_LIBS/libPocoJSON.a -Wl,-Bdynamic -o BCMain

不幸的是,这会给出一些有关符号的未定义引用的错误,例如:

Poco::Logger::get(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)

虽然Poco::Logger::get(std::string const&)实际上是定义在libPocoFoundation.a.

现在,如果我尝试链接到基础库的共享版本,它可以工作:

g++ BCCMain.o -L$_POCO_LIBS -Wl,-Bstatic $_POCO_LIBS/libPocoFoundation.a $_POCO_LIBS/libPocoUtil.a $_POCO_LIBS/libPocoXML.a $_POCO_LIBS/libPocoJSON.a -Wl,-Bdynamic -lPocoFoundation -o BCMain

库的静态和共享版本具有相同的符号,因此我发现很难弄清楚我做错了什么。

Ubuntu/利纳罗。克++4.6.3


我的经验是,静态链接时,链接 Poco 库的顺序很重要。 看来基金会是最后一个很重要。

对我有用的顺序是:

  1. Util
  2. Net
  3. XML
  4. 基础
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

poco c++ 静态链接问题与未定义的符号引用 的相关文章

随机推荐