小编gre*_*123的帖子

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

我正在尝试链接到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
Run Code Online (Sandbox Code Playgroud)

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

Poco::Logger::get(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
Run Code Online (Sandbox Code Playgroud)

即使Poco::Logger::get(std::string const&)实际上是IS定义的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
Run Code Online (Sandbox Code Playgroud)

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

Ubuntu的/ Linaro的.g ++ 4.6.3

c++ static-linking poco-libraries

5
推荐指数
2
解决办法
6266
查看次数

标签 统计

c++ ×1

poco-libraries ×1

static-linking ×1