初衷目的:解决编译运行程序提示LINK:fatal error LNK1104:无法打开文件:"libboost_A_vc120-mt-sgd-155.lib"
解释:
1.说白了就是没有链进去相关库.但是"这个"lib是需要你手工进行编译的,
2.各个库都有相对应的版本,比如120-对应的是msvc-12.0(vs2013提供的编译工具)进行编译生成的.
3.学会使用bjam 进行编译自己所需要的相关链接库.
4.boost有的库是直接包含头文件使用的,但有的还是需要相应的lib才能链接使用.
干货命令;
如果想直接得到相关库的情况下,直接运行下面命令即可得到.
以得到libboost_thread_vc120-mt-sgd-155.lib为例.
C:\MyLibStudy\boost_1_55_0>bjam toolset=msvc-12.0 --with-thread stage debug release threading=multi threading=single link=static runtime-link=static runtime-link=static
/*插入注释变通*/
msvc-12.0 为vs2013版本.,msvc-10.0:Viusal Studio 2010
thread为你想产生的lib中间字,所以,例如你想得到date_time,则仅需在上诉命令进行相应的关键字替换即可.
等待结果完成后,就能在当前目录下的stage目录下的lib目录中找到相对应的lib文件.最后再在C++属性页中添加相对应的库目录即可.
参考别人博客后解决的问题和相关命令解释:
参考博客一:http://blog.csdn.net/alpine_climbing/article/details/52318192
一. 获取Boost:
从Boost官方网站或sourceforge下载某一版本的Boost。这里下载的是boost 1.50.0,将Boost解压到"D:\SDK\boost_1_50_0"。
进入"D:\SDK\boost_1_50_0\tools\build\v2",执行bootstrap.bat批处理文件,生成b2.exe和bjam.exe两个Build文件。
将"bjam.exe"复制到boost根目录下("boost_1_50_0")。
二. 编译Boost:
打开CMD或"Visual Studio 命令提示(2010)",进入到bjam.exe所在目录下。
按造需求,有选择的执行以下命令:
1.完全编译安装:
bjam toolset=msvc-10.0 install
完成后会生成一个bin.v2编译时的临时目录,手动删除。生成另一个目录C:\boost,里面为所有的头文件和库文件。头文件目录为boost_1_50_0\boost目录复制过去的。
2.只编译相应的库文件:
bjam toolset=msvc-10.0 stage
完成后同样会生成bin.v2临时目录。另一个目录为stage文件,里面有对应的库文件。
3.编译特定的库,如只编译regex
bjam toolset=msvc-10.0 --with-regex stage
生成的库文件在stage目录中。
4.不编译某个库,如不编译python
bjam toolset=msvc-10.0 --without-python stage
生成的库文件在stage目录中。
5.按条件编译正则(regex)库
bjam toolset=msvc-10.0 --with-regex stage debug release threading=multi threading=single link=shared link=static runtime-link=shared runtime-link=static
toolset=msvc-10.0:Viusal Studio 2010,如果是2008的话就是9.0,2005就是8.0
variant=debug,release 生成哪些库文件。可以单选release也行的
threading=multi:多线程支持
runtime-link=static:静态库
--prefix:头文件和库文件的生成目录
下面详细解释一下每个参数的含义,请务必仔细看完:
| 参数名 | 解释 |
| stage/install | stage表示只生成库(dll和lib),install还会生成包含头文件的include目录。本人推荐使用stage,因为install生成的这个include目录实际就是boost安装包解压缩后的boost目录(D:\SDK\boost_1_50_0\boost,只比include目录多几个非hpp文件,都很小),所以可以直接使用,而且不同的IDE都可以使用同一套头文件,这样既节省编译时间,也节省硬盘空间。 |
| --stagedir | 配合stage时使用,指定编译生成文件的路径。默认路径为当前路径下的"./stage"文件夹。 |
| --prefix | 配合install时使用,指定编译生成文件的路径。在Win32默认为"C:\Boost";在Unix/Linux上默认为"/usr/local"。推荐给不同的IDE指定不同的目录,如VS2010对应的是D:\SDK\boost_1_50_0\vc10\lib,否则都生成到一个目录下面,难以管理。如果使用了install参数,那么还将生成头文件目录,vc10对应的就是D:\SDK\boost_1_50_0\vc10\include\boost-1_50\boost。 |
| --exec-prefix=<EPREFIX> | 安装体系结构所依赖的文件 |
| --libdir=<DIR> | 指定库文件安装目录 |
| --includedir=<HDRDIR> | 指定头文件安装目录 |
| --with-<library>/--without-<library> | 选择编译/不编译哪些库。本人不需要编译python库,所以排除之,可以根据各人需要选择,默认是全部编译。但是需要注意,如果选择编译python的话,是需要python语言支持的,应该到python官方主页http://www.python.org下载安装。 |
| --help | 显示帮助信息。 |
| --build-dir=DIR | 编译生成的中间文件的路径。这个本人这里没用到,默认就在根目录(D:\SDK\boost_1_50_0)下,目录名为bin.v2,等编译完成后可将这个目录全部删除(没用了),所以不需要去设置。 |
| --show-libraries | 显示需要编译才能使用的Boost库列表。 |
| toolset | 指定编译器,可选的如borland、gcc、msvc(VC6)、msvc-10.0(VS2010)等。 |
| link=static|shared | 生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用 static方式。这里需要注意的是,static方式下,最终生成的很多静态链接库大小都在几兆、几十兆,甚至接近百兆。这么大的库我们一般是不会采用静态链接方式的,所以这些库不推荐以static方式编译(without掉);如果已经编译了赶快删,肯定没用,否则将占用近1G的硬盘空间。以下是巨型库黑名单:wave、graph、math、regex、test、program_options、serialization、signals。 |
| runtime-link=static|shared | 动态/静态链接C/C++运行时库。同样有shared和static两种方式,这样runtime-link和link一共可以产生4种组合方式。虽然它和link属性没有直接关系,但我们习惯上,一个工程如果用动态链接那么所有库都用动态链接,如果用静态链接那么所有库都用静态链接。所以这样其实只需要编译2种组合即可,即link=shared runtime-link=shared和link=static runtime-link=static。 |
| threading=single|multi | 单/多线程编译。一般都写多线程程序,当然要指定multi方式了;如果需要编写单线程程序,那么还需要编译单线程库,可以使用single方式。 |
| variant=debug|release | 编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译。 |
本人按以上方式分别编译了静态链接和动态链接两个版本后,整个D:\SDK\boost_1_50_0目录(包括安装包解压缩文件和编译生成的库文件)只有250MB。事实上编译完成后安装包解压缩文件除了boost目录之外其他目录和文件已经可以删除了,这样还可以腾出150MB的空间来。不过我又研究了一下,其实libs这个目录也很有用,它提供了所有Boost类的使用范例,平时可以作为参考;另外doc目录是一个完整的boost使用帮助文档,当然最好也不要删了。这样剩下的几个目录和文件加起来也就十多兆,索性都给它们留一条生路吧。
直接指定编译器以完全模式编译即可,这样可以满足今后的一切使用场合,但同时带来的后果是:
- 占用空间大,编译时间长
- 头文件和库文件生成到C:\Boost
三. 在VS里配置Boost
包含(include)目录:D:\SDK\boost_1_50_0
库(library)目录:D:\SDK\boost_1_50_0\vc10\lib
添加到IDE相应的路径下面即可。
PS: vs2010编译器为msvc-10.0, vs2013编译器为msvc-12.0. 编译Python之前需要设置python的环境变量,否则找不到文件'pyconfig.h'.
参考博客二:http://blog.csdn.net/alex_my/article/details/17630685
当前boost最新版本为1.55,下载地址:
http://sourceforge.net/projects/boost/files/boost/1.55.0/
boost官网上提供了使用指导,part2:Instllation就说明了如何去编译,地址:
http://www.boost.org/boost-build2/doc/html/index.html
经过测试,2012和2013步骤相同,这里以2012为例。
1、打开VS2012 Native Tools Command,可以从开始--Microsoft Visual Studio 2012找到:
2、进入解压后的文件夹,当前放在F盘根目录下。执行bootstrap.bat,如图红框所示:
3、编译,可以简单的使用b2 install,也可以指定存放目录,或者寻找网上其它帮助文章。
查看帮助可以输入:.\b2 --help
比如要开启多线程编译:b2 install threading=multi
设置生成的是debug或者release
备注:如果是使用VS2013,请指定输出库类型,否则会缺一个lib文件:
"无法打开文件 libboost_thread_vc120_mt_sgd-1_55.lib"。
在2013时,我是使用下面的语句进行编译:
// 如果要获取动态库:
// 如果是要获取静态库:
其中,注意修改--toolset=msvc-12.0,将12.0修改成对应的vs版本号,12.0是VS2013的版本号。
目标地址也要修改成你所需的。
注意,不要漏了install,它会帮你把头文件集合到一个文件夹中。
include和lib文件夹,这就是我们将要使用的头文件和库文件。省去了各种老教程中需要自己搜索库
文件的步骤,本次编译比较长,或许你的机子很棒,编的很快。
4、编译完了我们就使用编译在C盘中的文件。我将它们拷贝到了F盘,然后建立了一个工程测试。
在F盘根目录下建立一个BoostTest工程用来测试。下图三个文件分别是:
1) 将要使用的boost头文件和库文件。
2) 解压出的boost文件夹,就是使用这个文件夹来进行 1 -- 3步骤的。
3) 测试工程。
5、在BoostTest中,删除了原来的文件,建立了一个main.cpp。
例子是网上搬来的:
http://blog.csdn.net/zengraoli/article/details/8870446
需要简单的配置两个地方:
以下这篇文章讲述三个boost智能指针的使用,一步步简洁明了

被折叠的 条评论
为什么被折叠?



