新手,Visual Studio 2015 配置Boost库,如何编译和选择,遇到无法打开文件“libboost_thread-vc140-mt-gd-1_63.lib“的解决办法
1,到官网下载最新的boost,www.boost.org 这里我下载的1-63版本.
2,安装,解压后运行bootstrap.bat文件。稍等一小会就OK。
3,编译boost库。注意一定要使用VS2015的x86本机工具命令提示,这个可以在VS2015的安装菜单里面找到。进入命令行提示,输入下面的内容:
bjam -j4 --debug-symbols=on --build-type=complete toolset=msvc-14.0 threading=multi runtime-link=shared address-model=32
注意这里指定的运行库类型是动态链接库: runtime-link=shared
当然也可以选择静态库,这样指定即可: runtime-link=static
根据电脑配置,太低可能要30分钟到一小时。然后等待编译完毕。
编译完后,屏幕会有下面的提示:
...updated 2376 targets...
The Boost C++ Libraries were successfully built!
The following directory should be added to compiler include paths:
E:boost_1_63_0boost_1_63_0
The following directory should be added to linker library paths:
E:boost_1_63_0boost_1_63_0stagelib
4,在VS2015中配置boost环境
项目属性 > 配置属性,然后看到下面的选择项: 常规 > 平台工具集,选择 Visual Studio 2015 (v140). 下面的两个操作,需要你将上面boost编译的时候告诉你的目录替换到下面说的有关目录信息里面去。 看到 "CC++" 常规 > 附加包含目录,增加"E:boost_1_63_0boost_1_63_0" 最后,看到“链接器”常规 > 附加库目录,增加"E:boost_1_63_0boost_1_63_0stagelib"
注意:一定要进行这样正确的设置,否则编译使用boost的程序总是会提示有问题。
5,使用boost:
#include "stdafx.h"
#include <iostream>
#include <boost/thread/thread.hpp>
void hello()
{
std::cout << "Hello world, I'm a thread!" << std::endl;
}
int main()
{
boost::thread thrd(&hello);
thrd.join();
}
出错:
错误 LNK1104 无法打开文件“libboost_thread-vc140-mt-gd-1_63.lib”
解决办法:
因为上面选择的是以动态链接库的形式编译的boost库,所以这里要选择 多线程调试 DLL(/MDd)。
再去运行一下。就OK了。
6,参考资料
新人,第一次使用C++,现在使用C++的人很少了,问了一圈都没有人会这个问题,查找了很多资料,这里贴出有用的参考资料: http://blog.csdn.net/zhaoya_huangqing/article/details/47318479 标题跟我差不多,多谢这位博主了。
http://www.cnblogs.com/rok-aya/p/4986261.html 转帖的老外的文章,很有启发性,跟本文的问题对路。
https://msdn.microsoft.com/zh-cn/vstudio/669zx6zc.aspx MSDN官方的指导如何实现项目属性,进阶
http://www.cnblogs.com/mr-wid/archive/2013/01/22/2871105.html http://www.cnblogs.com/wendao/archive/2011/11/28/article2_boost_bind.html boost学习的一些文章,值得参考。
- Data Guard搭建困境突围(一)(r10笔记第17天)
- Java基础-day07-知识点相关题-自定义数据类型;ArrayList
- windows10 tensorflow(二)原理实战之回归分析,深度学习框架(梯度下降法求解回归参数)
- 本人为巨杉数据库(开源NoSQL)写的C#驱动,支持Linq,全部开源,已提交github
- 最近的几个技术问题总结和答疑(九)(r10笔记第16天)
- AgileEAS.NET SOA中间件平台更新日志 2015-04-28
- 【Go 语言社区】Golang语言操作redis连接池的方法
- 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
- 关于Flashback的小测试(r10笔记第15天)
- 分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载
- 【Go 语言社区】Golang语言获取系统环境变量的方法
- Oracle中的PUBLIC(r10笔记第14天)
- Data Guard高级玩法:通过闪回恢复switchover主库 (r10笔记第13天)
- WinForm/MIS项目开发之中按钮级权限实践
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法