T33*_*33C 20 c++ linker boost visual-studio-2010
在MS Visual C++ 2010中
我的解决方案中有一个C++项目,它使用了boost并且工作得很好.
然后,我决定将此项目转换为静态库,并创建一个依赖于此静态库的新项目.
现在,我转换的静态库构建没有错误和警告(编译器和链接器),但新项目编译但不链接.
我正进入(状态:
1>LINK : fatal error LNK1104: cannot open file 'libboost_thread-vc100-mt-1_45.lib'
Run Code Online (Sandbox Code Playgroud)
作为测试,我添加了该库的链接器选项的完整目录路径......然后它抱怨了
1>LINK : fatal error LNK1104: cannot open file 'libboost_date_time-vc100-mt-1_45.lib'
Run Code Online (Sandbox Code Playgroud)
我现在已经添加了所有库的完整路径,现在它已构建并运行.
我对这个解决方案不满意,因为:
我知道答案是创建一个DLL,但有一种方法可以静态地执行此操作并保持链接在我的静态库级别.
编辑:
如果我告诉.exe链接器显式忽略boost libs那么一切都没问题,除了.exe根本不用担心boost.
/NODEFAULTLIB:"libboost_thread-vc100-mt-1_45.lib" /NODEFAULTLIB:"libboost_date_time-vc100-mt-1_45.lib"
Run Code Online (Sandbox Code Playgroud)
use*_*875 25
显然你不需要.libs,因为你的exe也没有它们.您似乎只使用boost header-only方法和类.因此,只需通过在项目中定义预处理程序符号BOOST_ALL_NO_LIB来告诉boost禁用自动链接.
如果你想通过包含所有的boost来使你的.lib不必要大,这个问题似乎有一个答案(我从未真正尝试过):将静态库链接到其他静态库
| 归档时间: |
|
| 查看次数: |
31479 次 |
| 最近记录: |