我已下载了boost库并希望将其包含在visual c ++中,但是在从boost网站复制一段示例代码后,我收到了错误
" LNK1104无法打开文件' libboost_regex-vc100-mt-gd-1_54'"
该文件当然存在。我猜测它是在我在命令提示符下运行bootstrap命令时创建的,我从指南https://www.youtube.com/watch?v=6trC5zVXzG0
开始我使用的示例文件如下:
#include <boost/regex.hpp>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string line;
boost::regex pat("^Subject: (Re: |Aw: )*(.*)");
while (cin)
{
getline(cin, line);
boost::smatch matches;
if (boost::regex_match(line, matches, pat))
cout << matches[2] << endl;
}
return 0;
}
我很抱歉,但我知道这种问题已经多次出现在堆栈溢出上,但我已经尝试了大多数我见过的解决方案并且错误仍然存在。
在visual c ++ 2015的解决方案资源管理器中,我点击我的proect,然后点击属性,然后在VC ++目录选项卡下,我添加了目录&#34; C:\ Program Files \ Boost& #34;进入包含目录,目录&#34; C:\ Program Files \ Boost \ stage \ lib&#34;进入库目录。但问题仍然存在。堆栈上的类似问题要求添加目录&#34; C:\ Program Files \ Boost \ stage \ lib&#34;到C / C ++选项卡下常规选项卡下的附加包含目录,以及链接器选项卡内常规选项卡下的附加包含目录。但所有这些变化对错误没有任何影响。堆栈上的另一个解决方案是添加目录&#34; C:\ Program Files \ Boost \ stage \ lib&#34;链接器选项卡下的输入选项卡下的附加依赖项,但是当我这样做时,错误更改为:
&#34; LNK1104无法打开文件&#39; C:\ Program Files \ Boost \ stage \ lib.ob&#39;&#34;
我不确定这是否是对错误的改进
因此,在尝试了所有这些似乎对其他人有用的解决方案后,我不断得到同样的错误。所以有人知道可能是错误的原因。
答案 0 :(得分:0)
您收到LNK错误,这意味着您的链接器属性可能缺少某些内容。确保已将 boost 文件夹和 boost \ stage \ lib 文件夹添加到项目属性&gt;配置&gt;链接器&gt; “其他图书馆馆藏”。
另请注意,如果您使用的是Visual Studio 2015,则应该使用msvc-14.0而不是msvc-10.0生成boost二进制文件。否则,您的Platform Toolset属性应设置为v100(默认值为v140)。您可以从“项目属性”&gt;更改此设置。配置&gt;一般&gt; “平台工具集”,但您需要安装该版本的visual studio。
答案 1 :(得分:0)
如果Aciel的答案没有解决你的问题(因为我看到你还没有接受这个答案),我相信这是因为你将你的升级lib编译为32位,你在64位中使用它们程序。 如果是这样,请尝试
bjam --toolset=msvc-14.0 --build-type=complete address-model=64
将boost lib重建为64位