c++ - 为什么我在用boost编译时仍然必须在linux上使用BOOST_LOG_DYN_LINK或BOOST_ALL_DYN_LINK?

标签 c++ boost compilation linker

据我所知,这两个宏用于启用 auto_link.hpp 生成#pragma comment(lib, name) 以便链接器可以自动链接使用的库,这应该只适用于 windows。但是在linux上,为什么我仍然需要至少定义两个宏中的一个,同时还必须指定使用的库?或者这两个宏在 linux 上如何工作?

最佳答案

宏:

  • BOOST_LOG_DYN_LINK
  • BOOST_TEST_DYN_LINK
  • BOOST_ALL_DYN_LINK
  • 等等

表示代码将链接到动态加载的(sodll)boost 库。

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

Windows 上的

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

关于c++ - 为什么我在用boost编译时仍然必须在linux上使用BOOST_LOG_DYN_LINK或BOOST_ALL_DYN_LINK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56019254/

相关文章:

java - 在字符串中编译 Java 代码

c - 编译时与外部变量的链接问题?

c++ - 为迷宫实现一棵树以在 DFS、BFS 中使用

c++ - 如何清理在 Local<External> 引用中跟踪的 C++ 对象?

c++ - 为类提供模板如何解决无效的 constexpr 依赖关系? C++

c++ - 在集群上加载库

c++ - 如何将位数组转换为字符

c++ - 写入:执行 boost::asio::async_write 时出现单元化错误

javascript - 在 Emscripten 中使用 Boost

c - 警告只有一个位域,而不是两个?