因为前面已经标记为重复:这个问题与基本的“如何安装boost.”无关。Boost已经安装,所有库(除了coroutine2 )都在正常工作。这是一个coroutine2问题。
当试图编译我的项目时,我会得到以下链接器错误:
LNK1104 cannot open file 'libboost_coroutine2-vc140-mt-gd-1_64.lib'在检查之后,我注意到文件丢失了,尽管我使用以下命令构建了boost:
b2 install --build-type=complete msvc -mt因此,我尝试使用以下命令手动构建它:
b2 install --build-type=complete msvc -mt --with-coroutine2发生了一些有趣的事情:它构建了Boost.Context (它已经由第一个命令构建了),但是没有看到Coroutine2库。
现在我试着在安装了boost 1.61的另一台计算机上运行这个项目--它运行得完美无缺!在检查coroutine2/detail/config.hpp (它确定要链接哪个库)之后,我注意到boost 1.61希望加载coroutine,而boost 1.64需要coroutine2库.
在Boost 快速入门页面上,Coroutine2没有被列为“已构建的”库,在剖析了config.hpp文件之后,我想出了定义#define BOOST_COROUTINES2_NO_LIB的想法,这会导致许多未知的符号.
我不知道我还能做些什么,请帮帮忙,亲爱的专业人士:)
发布于 2017-08-03 08:50:26
首先,我发现了确切的cpp正在生成LNK1104错误。然后,我启用了"Preprocess to a File“选项,以查看预处理文件中的链接请求。那就算了!
#line 401 "C:\\libdev4\\boost\\boost/config/auto_link.hpp"
#pragma comment(lib, "boost_coroutine2" "-" "vc140" "-mt" "-gd" "-" "1_64" ".lib")所以,它是boost 1.64 auto_link.hpp中的一个bug
附注:通过在我的项目中定义BOOST_ALL_NO_LIB并手动设置必要的库来禁用自动链接,解决了这个问题。
发布于 2017-06-05 17:04:52
boost.coroutine2是一个只有头的库-一个libboost_coroutine2-vc140-mt-gd-1_64.lib没有创建。您应该检查项目的链接器标志,并删除对libboost_coroutine2的引用。
编辑:从boost.coroutine2中删除子目录“build”
发布于 2017-11-29 11:14:32
在使用进行构建时,我在Boost 1.64中也遇到了同样的问题。使用Boost 1.65,我不再面临这个问题了。
https://stackoverflow.com/questions/44365495
复制相似问题