boost_1_37_0怎么装?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了boost_1_37_0怎么装?相关的知识,希望对你有一定的参考价值。

我用的vs2005,路径是
“D:\Program Files\Microsoft Visual Studio 8”
具体怎么装啊?
偶是菜鸟,希望详细一点
我试了网上好几种方法了,不知道为什么都不好使
提示
1>LINK : fatal error LNK1104: 无法打开文件“libboost_regex-vc80-mt-gd-1_37.lib

①打开你是boost_1_37_0文件夹
②打开tools/jam/src
③点击build.bat
稍等一下会生成一个新的文件夹,打开里面有一个bjam.exe,复制它然后将它粘贴到boost_1_37_0文件夹里面
然后打开vc2005的命令行:开始->所有程序->visualstudio 2005->visual sudio tools->命令提示(也就是那个黑色doc的标志)
(许多人用cmd 那个doc命令,许多情况下是不行的,我就试过)
假如你的boost文件夹在E:/boost_1_37_0;
那么可以这样打命令:
1 E:然后回车
2 cd boost_1_37_0 然后回车
3 bjam.exe 然后回车
你的boost库就开始编译了,时间很长~

剩下的别人也说得较为清楚,呵呵,;-),
我玩boost很久了,从1.34开始就一直玩,很不错
参考技术A link命令行参数中path 没有把路径加进去。 参考技术B 通常我们使用Boost是不需要编译的,所以不会出现这样的情况,当你使用Boost的部分需要编译的库的时候就会出现上面所说的这种情况,比如说你所要使用的正则表达式。。

所以你现在需要编译Boost1.37.

2.3. 安装boost
boost是一套开放源代码的,高度可移植的C++库。它相当于C++标准库(STL)的改进与扩展。并且,它其中的不少模块,已被下一代C++标准库采用。的确,boost库非常注重与C++标准库之间协同性,用户对STL的许多学习或使用的体验,在接触boost时,会很自然地“似曾相识”。
定位上,boost 库希望自己是一个可用于广泛的、不同业务方向的应用都能使用的基础库——这完全和STL的定义一致,但STL太过于基础了,我们来做一个比较吧。
首先,boost是一个基础库。boost不像wxWidgets那样具备一个明确的业务方向:GUI(虽然wxWidgets也提供了众多其它功能)。boost提供的功能偏向基础设施,所以它的应用目标更为广泛。
然后,boost和STL比较,STL作为C++必须实现的标准库,它几乎就是在提供成型的,可复用的“数据结构”与“算法”的大全。boost,特别是2008年发布的1.36版,提供了大量高级功能。当前包括:“正则表达式”、“线程”、“网络”、“数学”、“图(数学)”、“字符串”、“CRC校验”、“文件”、“日期、时间”、“图(图形处理)”等等模块。
如果在不同语言之间做横向比较,那么我们会发现,Java和C# (.NET)语言,它们的标准库所提供的功能无比广泛,而C++的标准库则相当可怜——甚至连“线程”都没有提供。boost库非常好地弥补了C++的这一点不足。
和STL类似,boost大量采用现代C++的泛型编程技术。因此多数模块,我们在使用时,仅仅需要引用其“头文件”;另外有10来个必须或者建议进行编译的模块——但本书下面的教程并没有对这10来个库进行完整编译——至少有两个原因:其一、我们并不立即就用到全部的boost库;其二、如果完整编译,需要使用的时间,可能长达5个小时。
2.3.1. 准备
本书光盘自带了安装boost所需要的两个文件,您也可以上boost官方网站(参看本小节尾部的相关网址),下载这两个文件:

boost 1.36.0 的源代码压缩文件,推荐下载 7zip 版本:boost_1_36_0.7z”。 boost 编译工具,请选择windows下的可执行文件:boost-jam-3.1.16-1-ntx86.zip
下载后,得到源代码压缩文件,如果是7zip格式的“boost_1_36_0.7z”,约25M,解压后,将迅速变为175M,但这仅仅是源代码及文档的大小,在编译过程中,所需的空间更是惊人,请您保证解压缩后文件所在的磁盘驱动器,至少有5个G的可用空间。
boost 的编译工具,可以根据需要,将编译之后库文件,及不需要编译的头文件,统一复制到指定的目录,这样有利于我们得到一个“干净”的boost编译结果目录,本书将采用此方法。
下面,我们假设boost_1_36_0.7z被解压到“X:\tmp\boost_1_36_0”目录下,其中“X:”表示您选用的磁盘驱动器盘符, “tmp”是我们事先创建的文件夹,而 “boost_1_36_0”则在解压以后得到。我们把“X:\tmp\ boost_1_36_0”称为“boost安装源路径”。
接下来,假设我们希望它boost安装到“E:\ boost_1_36_0”目录下,请事先创建好这个文件夹,我们把这个路径,称为“boost安装目标路径”。
请解压“boost-jam-3.1.16-1-ntx86.zip”文件,得到bjam.exe,将它复制到boost安装源路径,即“X:\tmp\boost_1_36_0”之下。
2.3.2. 编译
步骤1:打开“开始”菜单,选择“运行”,输入cmd,进入控制台窗口,然后在其内通过cd命令,切换到boost安装源路径下。本例中为:
“X:\tmp\boost_1_36_0”,则过程如下:
X: (回车)
cd tmp\boost_1_36_0 (回车)
步骤2:继续上步,请在控制台内输入:
bjam --show-libraries (回车)
步骤3:正确情况下,将看到以下输出内容:
The following libraries require building:
- date_time
- filesystem
- function_types
- graph
- iostreams
- math
- mpi
- program
_options
- python
- regex
- serialization
- signals
- system
- test
- thread
- wave
步骤4:这里列出的是所有需要编译的boost模块,但我们将放弃对以下模块的编译: wave、mpi、 python、math、graph。这些模块的具体含义,大家如有需要,请自行查明。
步骤5:继续上步,在控制台内输入:
bjam install --toolset=gcc --prefix="E:\boost_1_36_0" debug --without-wave --without-mpi --without-python --without-math --without-graph (回车)
步骤6:请特别注意其中加粗部分,更换为您自己的“boost安装目标路径”。其它部分作如下说明:
步骤7:-- 是两个连续的减号,=前后均不能夹带空格,除路径之外,参数都是小写字母。
步骤8:--toolset 表示采用gcc编译。这里指的mingw32下的gcc。因此,要正确编译boost,请您一定事先已完成2.1小节中,有关Code::Blocks下mingw32环境的安装。
步骤9:debug表示我们首先编译“调试版”。
步骤10:多个 --without 指定了所要放弃编译的模块。
步骤11:回车后,控制台内将出现大量看似奇奇怪怪地文字,最后能看到以下内容,就表示成功完成本步:
...failed updating 2 targets.
...skipped 31 targets...
...updated 341 targets...
步骤12:继续上步,在控制台内输入:
bjam install --toolset=gcc --prefix="E:\boost_1_36_0" release --without-wave --without-mpi --without-python --without-math --without-graph (回车)
步骤13:改变的是“debug”更换为“release”。回车后开始发行版的boost库编译。
2.3.3. 补充
如果您的硬盘还有很大的空闲,比如还有50G空间没用上呢,那么我们也不反对——应该说是非常地支持——事实上是非常地艳羡——您完整地编译boost。
〖危险〗:编译boost:时间与空间双重负担
没错,我们马上就要提供“boost完全编译”的方法,但先要郑重提醒您:完整编译boost,不仅需要接近5个小时的等待,而且在空间上,需要高达12~15G的磁盘空间。
完整编译boost的命令行:
bjam install --toolset=gcc --prefix="您的\boost\安装\目标路径" --build-type=complete
2.3.4. 结束
检查“boost安装目标路径”,应该可以看到两个子目录位于其内:“include”及“lib”,前者保存着所有采用纯头文件形式提供的boost代码文件;后者则保留着上一步的编译结果,这些库文件首先可以区分为以下三种形式:

“动态链接库”,扩展名以.dll结束 “导入库”,扩展名以.lib结束,且文件名以版本号1_36结束 “静态链接库”,以扩展名.lib结束。
然后三种形式再次区分为“发行版”和“调试版”,后者的文件名比前者多出一个“-d-”修饰。另外我们还可以看到所有库文件名中都带有“-mt-”字样,这是表示这些库都支持“多线程/Multithreads”。
请保存“boost_1_36_0.7z”及“boost-jam-3.1.16-1-ntx86.zip”两个文件,然后,建议您将 “boost安装源路径”下的doc文件夹——这是boost的说明文档——复制到“boost安装目标路径”下,然后,您可以放心地删除“boost安装源路径”。

无法在 Boost.Python 中使用 __stdcall 编译示例

【中文标题】无法在 Boost.Python 中使用 __stdcall 编译示例【英文标题】:Can't compile example with __stdcall in Boost.Python 【发布时间】:2016-11-24 07:49:44 【问题描述】:

我正在尝试使用 Boost.Python 在 Python 中包装一个函数,但我在使用 __stdcall 时遇到了问题。这是一个例子:

#define BOOST_PYTHON_STATIC_LIB
#define BOOST_PYTHON_ENABLE_STDCALL
#include <boost/python.hpp>
#include <boost/python/signature.hpp>

void __stdcall f(void) 

    return;


using namespace boost::python;

BOOST_PYTHON_MODULE(MyPyDLL)

    def("func", f);

当我尝试编译时,我得到了 100 多个类似的错误,但前 2 个是:

错误 C2780: 'boost::mpl::vector10::type&,T0,T1,T2,T3,T4,T5,T6,T7> boost::python::detail::get_signature(RT (__thiscall ClassT::* )(T0,T1,T2,T3,T4,T5,T6,T7) const,Target *)': 需要 2 个参数 - 1 假如 C:\boost\boost_1_62_0_python\boost\python\make_function.hpp 104

错误 C2780: 'boost::mpl::vector10::type&,T0,T1,T2,T3,T4,T5,T6,T7> boost::python::detail::get_signature(RT (__thiscall ClassT::* )(T0,T1,T2,T3,T4,T5,T6,T7) volatile const,Target *)': 期望 2 参数 - 提供 1 个 C:\boost\boost_1_62_0_python\boost\python\make_function.hpp 104

如你所见,我使用了 BOOST_PYTHON_ENABLE_STDCALL 的定义,在 this page: 中提到过

但是无论是否定义它,问题都是一样的。

有谁知道我做错了什么?

【问题讨论】:

【参考方案1】:

如果您在导入 boost 头文件后定义 BOOST_PYTHON_ENABLE_STDCALL,则会收到该错误。

【讨论】:

以上是关于boost_1_37_0怎么装?的主要内容,如果未能解决你的问题,请参考以下文章

怎样在VS2013中安装配置boost

在 mac os x 山狮上安装 boost_1_53_0

如何为新安装的 Boost 添加编译器包含路径和链接器库路径?

windows 怎么安装boost

vs2010 编译boost库

win10+VS2015+boost_1.60.0