一 Boost的Auto-Link
Boost提供了为程序自动链接需要的库的功能特性,具体代码在
boost/config/auto_link.hpp
中可以看到。它的功能主要表现为:
使用boost的许多库都只需包含头文件,例如:
#include <boost/thread.hpp>
此时,不用包含库文件,boost的auto-link机制将会自动帮我们包含对应的静态lib。也就是说,boost默认是以静态方式链接的,这样我们的工程属性最好也设为Multi-threaded(Debug)。如果想使用dll动态方式链接,需要预先定义宏:
#define BOOST_ALL_DYN_LINK
--From 参考文献2:《学习boost的自动链接机制(Auto-Link)》
二 链接库问题
一 使用动态链接库时
在包含Boost库的头文件前就得定义BOOST_ALL_DYN_LINK
要定义 BOOST_LOG_DYN_LINK 或者 BOOST_ALL_DYN_LINK
-
BOOST_LOG_DYN_LINK
:这个宏指示编译器链接Boost日志库的动态链接版本。 -
BOOST_ALL_DYN_LINK
:这个宏指示编译器链接所有Boost库的动态链接版本。
#define BOOST_ALL_DYN_LINK
或者 #define BOOST_LOG_DYN_LINK
2. 使用静态库时,注意 libboost_log_setup.a和libboost_log.a 两个库的顺序, 正确的顺序是 libboost_log_setup.a 应该在 libboost_log.a 之前.