0
尝试我的项目静态地boost.log上MSVC 10.0链接的时候,我发现了以下(还有更多)错误:boost.log错误链接静态
1>libboost_log-vc100-mt-gd-1_53.lib(attribute_name.obj) : error
LNK2001: unresolved external symbol "**__declspec(dllimport)** public:
__thiscall std::_Container_base::~_Container_base(void)" ([email protected]@@[email protected])
1>libboost_log-vc100-mt-gd-1_53.lib(text_file_backend.obj) : error
LNK2001: unresolved external symbol "**__declspec(dllimport)** public:
__thiscall std::_Container_base::~_Container_base(void)" ([email protected]@@[email protected])
注意,该项目为还可以链接到增强系统,文件系统和线程库。
1> Searching ../lib/\libboost_system-vc100-mt-gd-1_53.lib:
1> Searching ../lib/\libboost_date_time-vc100-mt-gd-1_53.lib:
1> Searching ../lib/\libboost_regex-vc100-mt-gd-1_53.lib:
1> Searching ../lib/\libboost_thread-vc100-mt-gd-1_53.lib:
1> Searching ../lib/\libboost_chrono-vc100-mt-gd-1_53.lib:
1> Searching ../lib/\libboost_log-vc100-mt-gd-1_53.lib:
1> Searching ../lib/\libboost_filesystem-vc100-mt-gd-1_53.lib:
我的项目没有定义BOOST_ALL_DYN_LINK
或BOOST_LOG_DYN_LINK
宏,所以我不希望看到的__declspec
签名,这我想是最终的问题。我是否缺少静态正确链接此库所需的内容?
更新
我删除了预编译的头对我的项目,并进行了“干净”的,一切连接正常。预编译头文件是否有可能导致项目静态链接到CRT?
'BOOST_ALL_DYN_LINK'强制* Boost *库动态链接,而您看到的'__declspec'签名与标准C++库有关,该库是动态链接的。 PCH不能改变CRT连接,它只是MT/MD编译器选项,但IDE中通常存在一些故障,所以清理和重建总是很好的。 – 2013-04-23 12:11:32
@IgorR。总是要学习。感谢您的帮助,随时重新发布答案。 – jwalk 2013-04-23 12:27:48
我认为它不能回答你的问题,因为我不知道你的项目设置有什么问题。 – 2013-04-23 16:10:09