首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建Boost Coroutine2

构建Boost Coroutine2
EN

Stack Overflow用户
提问于 2017-06-05 09:12:59
回答 4查看 1K关注 0票数 0

因为前面已经标记为重复:这个问题与基本的“如何安装boost.”无关。Boost已经安装,所有库(除了coroutine2 )都在正常工作。这是一个coroutine2问题。

当试图编译我的项目时,我会得到以下链接器错误:

代码语言:javascript
复制
LNK1104 cannot open file 'libboost_coroutine2-vc140-mt-gd-1_64.lib'

在检查之后,我注意到文件丢失了,尽管我使用以下命令构建了boost:

代码语言:javascript
复制
b2 install --build-type=complete msvc -mt

因此,我尝试使用以下命令手动构建它:

代码语言:javascript
复制
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的想法,这会导致许多未知的符号.

我不知道我还能做些什么,请帮帮忙,亲爱的专业人士:)

EN

回答 4

Stack Overflow用户

发布于 2017-08-03 08:50:26

首先,我发现了确切的cpp正在生成LNK1104错误。然后,我启用了"Preprocess to a File“选项,以查看预处理文件中的链接请求。那就算了!

代码语言:javascript
复制
#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并手动设置必要的库来禁用自动链接,解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2017-06-05 17:04:52

boost.coroutine2是一个只有头的库-一个libboost_coroutine2-vc140-mt-gd-1_64.lib没有创建。您应该检查项目的链接器标志,并删除对libboost_coroutine2的引用。

编辑:从boost.coroutine2中删除子目录“build”

票数 0
EN

Stack Overflow用户

发布于 2017-11-29 11:14:32

在使用进行构建时,我在Boost 1.64中也遇到了同样的问题。使用Boost 1.65,我不再面临这个问题了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44365495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档