3

我正在使用 Eclipse CDT 的托管 make 功能。使用仅动态库创建项目按预期工作。但是 boost_unit_test_framework 应该是静态链接的,因为它包含 main 函数。在命令行上混合链接到动态和静态库不是问题。所以这是一个工作示例:

g++ -L../Debug -L../boost/lib -o "Test" ./Test.o -ldynLib -Wl,-Bstatic -lboost_unit_test_framework -Wl,-Bdynamic

dynlib 和 libc 等标准库是动态链接的,而 boost_unit_test_framework 是静态链接的。但是我如何在项目的设置中输入这些信息?我看不到任何方法。

可以在每个项目中标记此库以进行静态链接,例如在全局位置。QNX([手册])使用了约定。可以使用 LIBPREF_library 和 LIBPOST_library 在指定库之前或之后添加选项。

更新: 我仍然不知道如何解决所描述的问题。但与此同时,我已将构建系统从 Managed Make 切换到 CMake。此外,我现在正在使用 Qt Creator,因为它能够索引提升并且在更新一些内部结构时不会冻结 UI ...

[手册] http://www.qnx.com/developers/docs/6.3.0SP3/neutrino/prog/make_convent.html#USEMAC

4

2 回答 2

2

我认为您不需要指定链接的类型。动态库不能静态链接,反之亦然。在我的一个项目中,在项目属性 -> C/C++ 构建 -> 设置下,我在库下列出了静态库和动态库。似乎可以确定它们是什么类型,并且无论哪种方式都可以很好地链接。

于 2012-03-13T19:49:56.620 回答
2

动态库进入:链接器/库/库(-l)静态库进入:链接器/杂项/其他文件和对象

于 2014-02-03T13:35:28.513 回答