在使用boost进行编译时,为什么在Linux上仍然必须使用BOOST_LOG_DYN_LINK或BOOST_ALL_DYN_LINK?

时间:2019-05-07 09:12:57

标签: c++ boost compilation linker

AFAIK,这两个宏用于使auto_link.hpp生成#pragma comment(lib,name),以便链接器可以自动链接使用的库,该库仅在Windows上有效。但是在linux上,为什么我还需要定义两个宏中的至少一个,同时还必须指定所用的库?还是这两个宏在Linux上如何工作?

1 个答案:

答案 0 :(得分:0)

宏:

  • BOOST_LOG_DYN_LINK
  • BOOST_TEST_DYN_LINK
  • BOOST_ALL_DYN_LINK

表示代码将与动态加载的sodllboost库链接。

由于boost上的linux库通常是作为动态加载的库构建的,因此有必要定义上述宏之一来链接相关的boost库。

Boost上的

Windows库通常被构建为静态链接库。 但是,如果已将相关的boost库构建为动态加载的库,则在Windows上构建时也需要使用宏。