gpt4 book ai didi

c++ - poco c++ 静态链接问题与 undefined symbol 引用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:17 27 4
gpt4 key购买 nike

我正在尝试像这样链接到 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

不幸的是,这会导致一些 undefined symbol 引用错误,例如:

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/利纳罗。 g++ 4.6.3

最佳答案

我的经验是,静态链接时链接 Poco 库的顺序很重要。似乎重要的基础是最后一个。

对我有用的顺序是:

  1. 利用
  2. 网络
  3. XML
  4. 基金会

关于c++ - poco c++ 静态链接问题与 undefined symbol 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15701796/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com