如何在Visual Studio 2010中使用Boost

如何在Visual Studio 2010中使用Boost,第1张

概述如何在Visual Studio 2010中使用Boost

关于如何在Visual Studio 2010中的空项目中使用Boost库,一步一步的解释是什么?

boost :: bind返回一个函数对象,它是需要指针的函数的参数

卸载boost并安装另一个版本

使用boost文件系统parsing符号链接

旧的海湾合作委员会版本提升

“编译器线程支持未打开”。

虽然Nate的答案已经相当不错了,但是我会根据要求更加专门针对Visual Studio 2010进行扩展,并在各种可选组件中包含需要外部库的信息。

如果您只使用头文件库,那么您只需要解压缩下载并设置环境变量即可。 下面的指令只为Visual Studio设置环境变量,而不是整个系统。 注意你只需要做一次。

将最新版本的boost(1.47.0)写入您选择的目录(例如C:boost_1_47_0 )。

在Visual Studio中创建一个新的空项目。

打开Property Manager并展开您选择的平台的配置之一。

选择并右键单击Microsoft.Cpp.<Platform>.user ,然后选择“ PropertIEs以打开属性页进行编辑。

选择左侧的VC++ DirectorIEs 。

编辑“ Include DirectorIEs部分以包含升压源文件的路径。

重复步骤3 – 6,根据需要选择不同的平台。

如果你想使用boost需要构建的部分,但是没有一个需要外部依赖的特性,那么构建它就相当简单。

将最新版本的boost(1.47.0)写入您选择的目录(例如C:boost_1_47_0 )。

启动您选择的平台的Visual Studio命令提示符并导航到提升的位置。

运行: bootstrap.bat生成b2.exe(以前称为bjam)。

运行b2:

Win32: b2 --toolset=msvc-10.0 --build-type=complete stage ;

x64: b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage

去散步/看电影或2 / ….

通过上述指令集中的步骤2 – 6来设置环境变量。

编辑library DirectorIEs部分以包含boost库输出的路径。 (上述示例和说明的默认设置是C:boost_1_47_0stagelib 。如果您希望并行安装x86和x64(例如<BOOST_PATH>libx86 & <BOOST_PATH>libx64 )。

重复步骤2 – 6,根据需要选择不同的平台。

如果你想要可选的组件,那么你有更多的工作要做。 这些是:

Boost.IOStreams Bzip2过滤器

Boost.IOStreams Zlib过滤器

Boost.MPI

Boost.Python的

Boost.Regex ICU支持

Boost.Iostreams Bzip2过滤器:

将最新版本的bzip2库(编写时为1.0.6)源文件解压缩到您选择的目录(例如C:bzip2-1.0.6 )。

按照上面的第二组指令来构建boost,但在步骤5中运行b2时添加选项-sBZIP2_SOURCE="C:bzip2-1.0.6" 。

Boost.IOStreams Zlib过滤器

将最新版本的zlib库(1.2.5编写)源文件解压到您选择的目录(例如C:zlib-1.2.5 )。

按照上面的第二组指令来构建boost,但在步骤5中运行b2时添加选项-sZliB_SOURCE="C:zlib-1.2.5" 。

Boost.MPI

安装一个MPI发行版,例如Microsoft Compute Cluster Pack。

按照上面第二组指令中的步骤1 – 3建立提升。

编辑运行引导程序导致的<BOOST_PATH>目录中的文件project-config.jam 。 添加一行, using mpi ;读取using mpi ; (注意';'之前的空格)。

按照上面第二组指令的其余步骤构建提升。 如果MPI安装的自动检测失败,则需要查找并修改相应的构建文件以在正确的位置查找MPI。

Boost.Python的

安装一个Python发行版,比如ActiveState的ActivePython。 确保Python安装位于PATH中。

要完全构建库的32位版本,需要32位Python,对于64位版本也是如此。 如果因为这个原因安装了多个版本,则需要告诉b2在哪里可以找到特定版本以及何时使用哪个版本。 一种方法是编辑运行引导程序导致的<BOOST_PATH>目录中的文件project-config.jam 。 添加以下两行,根据您的Python安装路径和版本进行调整(注意“;”之前的空格)。

using python : 2.6 : C:\Python\Python26\python ;

using python : 2.6 : C:\Python\Python26-x64\python : : : <address-model>64 ;

请注意,这样的显式Python规范目前会导致MPI构建失败。 所以如果你正在构建MPI,那么你需要做一些独立的构建,不管规范如何构建。

按照上面的第二组指令来建立提升。

Boost.Regex ICU支持

将最新版本的ICU4C库(写入时为4.8)源文件解压到您选择的目录(例如C:icu4c-4_8 )。

在<ICU_PATH>sourceallinone打开Visual Studio解决方案。

为您所选择的平台进行调试和发布配置。 当deBUG&release版本的输出位于同一目录(这是默认行为)时,用Visual Studio 2010构建ICU4C的最新版本可能会出现问题 。 一个可能的解决方法是做一个全部构建(调试构建说),然后在第二个配置(例如发布版本)中重建所有。

如果要为x64构建,则需要运行x64 *** 作系统,因为有构建步骤需要运行一些正在构建的64位应用程序。

完成后,可以选择删除源目录。

按照上面的第二组指令来构建boost,但是在步骤5中运行b2时添加选项-sICU_PATH="C:icu4c-4_8" 。

虽然Boost网站上的说明很有帮助,但下面是一个精简版本,它也构建了x64库。

如果您使用说明页面第3节中提到的库之一,则只需执行此 *** 作。 (例如,要使用Boost.filesystem需要编译。)如果您没有使用这些,只需解压缩即可。

构建32位库

这将在C:Boostincludeboost-(version)下安装Boost头文件,并在C:Boostlibi386下安装32位库。 请注意,库的默认位置是C:Boostlib但如果您计划为多个体系结构构建,则需要将它们放在i386目录下。

将Boost解压缩到一个新的目录中。

启动一个32位MSVC命令提示符并切换到Boost解压缩的目录。

运行: bootstrap

运行: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:Boostlibi386 install

对于Visual Studio 2012,请使用toolset=msvc-11.0

对于Visual Studio 2010,请使用toolset=msvc-10.0

将C:Boostincludeboost-(version)到包含路径中。

将C:Boostlibi386到您的libs路径。

构建64位库

这将在C:Boostincludeboost-(version)下安装Boost头文件,并在C:Boostlibx64下安装64位库。 请注意,库的默认位置是C:Boostlib但如果您计划为多个体系结构构建,则需要将它们放在x64目录下。

将Boost解压缩到一个新的目录中。

启动一个64位MSVC命令提示符并切换到解压缩Boost的目录。

运行: bootstrap

运行: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:Boostlibx64 architecture=x86 address-model=64 install

对于Visual Studio 2012,请使用toolset=msvc-11.0

对于Visual Studio 2010,请使用toolset=msvc-10.0

将C:Boostincludeboost-(version)到包含路径中。

将C:Boostlibx64到您的libs路径中。

您也可以尝试使用-j%NUMBER_OF_PROCESSORS%作为它将使用所有内核的参数。 使我的四核心超快速。

我可以推荐以下技巧:创建一个特殊的boost.props文件

打开物业经理

右键单击您的项目节点,然后选择“添加新的项目属性表”。

选择一个位置并命名你的属性表(例如c: mystuff boost.props)

将其他Include和lib文件夹修改为搜索路径。

这个过程的价值在于,只有在你想明确包含它的项目中才会包含boost。 当你有一个新的项目使用提升,做:

打开物业经理。

右键单击项目节点,然后选择“添加现有属性表”。

选择提升属性表。

编辑(从@ jim-fred编辑):

由此产生的boost.props文件看起来像这样…

<?xml version="1.0" enCoding="utf-8"?> <Project Toolsversion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <importGroup Label="propertysheets" /> <PropertyGroup Label="UserMacros"> <BOOST_DIR>D:boost_1_53_0</BOOST_DIR> </PropertyGroup> <PropertyGroup> <IncludePath>$(BOOST_DIR);$(IncludePath)</IncludePath> <libraryPath>$(BOOST_DIR)stagelib;$(libraryPath)</libraryPath> </PropertyGroup> </Project>

它包含用于boost目录位置的用户宏(在本例中为D: boost_1_53_0)和另外两个参数:IncludePath和libraryPath。 语句#include <boost/thread.hpp>会在相应的目录(在这种情况下,D: boost_1_53_0 boost thread.hpp)中找到thread.hpp。 “stage lib ”目录可能会根据安装的目录而改变。

boost.props文件可以位于D:boost_1_53_0目录下。

你需要什么Boost的部分? 很多东西都是Visual Studio附带的TR1的一部分,所以你可以简单地说,例如:

#include <tr1/memory> using std::tr1::shared_ptr;

根据詹姆斯,这也应该工作(在C + + 0x):

#include <memory> using std::shared_ptr;

还有一点点:如果你想减少编译时间,你可以添加标志

-j2

同时运行两个并行版本。 这可能会减少它观看一部电影;)

这个线程已经有一段时间了,我想我会添加一些关于如何在您的特定硬件上尽快构建Boost。

如果你有一个4或6核心分别使用-j5或-j7。 当然不是标准的构建,也不是-j2,除非你确实有双核。

我正在运行Sandy BrIDge Extreme,在我的主站上有3​​930K(6核)的主频,但在老的备份盒上有2600K(4核),而且我的趋势是我可以用N + 1构建进程,其中N是物理内核的数量。 N + 2达到收益递减点,时间上升。

备注:启用超线程,32GB内存DDR3,三星840 EVO SSD。

-j7 6核(2分51秒)(Win7 ultimate x64)(Visual Studio 2013)

PS C:Boostboost_1_56_0> measure-command { .b2 -j7 --build-type=complete msvc stage } Days : 0 Hours : 0 Minutes : 2 Seconds : 51 Milliseconds : 128 Ticks : 1711281830 TotalDays : 0.0019806502662037 TotalHours : 0.0475356063888889 TotalMinutes : 2.85213638333333 TotalSeconds : 171.128183 TotalMilliseconds : 171128.183

6核心(3分钟和2秒)(Win7旗舰版x64)(Visual Studio 2013)

PS C:Boostboost_1_56_0> measure-command { .b2 -j6 --build-type=complete msvc stage } Days : 0 Hours : 0 Minutes : 3 Seconds : 2 Milliseconds : 809 Ticks : 1828093904 TotalDays : 0.00211584942592593 TotalHours : 0.0507803862222222 TotalMinutes : 3.04682317333333 TotalSeconds : 182.8093904 TotalMilliseconds : 182809.3904

-j8 6核(3分17秒)(Win7 ultimate x64)(Visual Studio 2013)

PS C:Boostboost_1_56_0> measure-command { .b2 -j8 --build-type=complete msvc stage } Days : 0 Hours : 0 Minutes : 3 Seconds : 17 Milliseconds : 652 Ticks : 1976523915 TotalDays : 0.00228764342013889 TotalHours : 0.0549034420833333 TotalMinutes : 3.294206525 TotalSeconds : 197.6523915 TotalMilliseconds : 197652.3915

配置

Building the Boost C++ librarIEs. Performing configuration checks - 32-bit : yes (cached) - arm : no (cached) - mips1 : no (cached) - power : no (cached) - sparc : no (cached) - x86 : yes (cached) - has_icu builds : no (cached) warning: Graph library does not contain MPI-based parallel components. note: to enable them,add "using mpi ;" to your user-config.jam - zlib : no (cached) - iconv (libc) : no (cached) - iconv (separate) : no (cached) - icu : no (cached) - icu (lib64) : no (cached) - message-compiler : yes (cached) - compiler-supports-ssse3 : yes (cached) - compiler-supports-avx2 : yes (cached) - gcc visibility : no (cached) - long double support : yes (cached) warning: skipPing optional Message Passing Interface (MPI) library. note: to enable MPI support,add "using mpi ;" to user-config.jam. note: to suppress this message,pass "--without-mpi" to bjam. note: otherwise,you can safely ignore this message. - zlib : no (cached)

我注意到64位版本需要更长的时间,我需要做相同的比较和更新。

以下是我如何使用Boost:

下载并提取Boost库的zip版本。

运行bootstrap.bat文件,然后运行bjam.exe。

等待大约30分钟左右。

在Visual Studio中创建一个新项目。

转到项目 – >属性 – >链接器 – >常规 – >其他库目录,并添加boost / stage / lib目录。

转到项目 – >属性 – > C / C ++ – >常规 – >其他包含目录,并添加boost目录。

你将能够建立你的项目没有任何错误!

从http://www.boost.org/users/download/下载,例如通过svn

windows – >乌龟(最简单的方法)

之后:cmd – >进入boost目录(“D: boostTrunk” – 在这里你签出或下载并解压包):command: bootstrap

我们在(“D: boostTrunk”)中创建了bjam.exe之后:命令: bjam toolset = msvc-10.0 variant = deBUG,释放线程=多链接=静态 (需要一些时间~20分钟)

之后:打开Visual Studio 2010 – >创建空项目 – >去项目属性 – >设置:

粘贴这个代码并检查它是否工作?

#include <iostream> #include <boost/shared_ptr.hpp> #include <boost/regex.hpp> using namespace std; struct Hello { Hello(){ cout << "Hello constructor" << endl; } ~Hello(){ cout << "Hello destructor" << endl; cin.get(); } }; int main(int argc,char**argv) { //Boost regex,compiled library boost::regex regex("^(Hello|Bye) Boost$"); boost::cmatch helloMatches; boost::regex_search("Hello Boost",helloMatches,regex); cout << "The word between () is: " << helloMatches[1] << endl; //Boost shared pointer,header only library boost::shared_ptr<Hello> sharedHello(new Hello); return 0; }

资源: https : //www.youtube.com/watch?v = 5AmwIwedTCM

位于这里的windows安装程序对我来说是完美的。 我采取了以下步骤:

按照安装向导完成。

运行视觉工作室。

创建一个新的C ++项目

打开项目属性(可以通过在解决方案资源管理器中右键单击项目名称来找到)

在“C / C ++> General> Additional Include DirectorIEs”下添加boost根目录的路径。 我的版本的默认值是C: local boost_1_63_0。 “提升”之后的数字是提升的版本。

在项目属性中的“链接器>其他库目录”下添加库文件的目录。 我的版本的默认值是C: local boost_1_63_0 lib64-msvc-14.0。 “lib”之后的数字与构建目标(Visual Studio中的32位或64位)相关,“msvc”之后的数字与Visual Studio的版本相关(14.0与Visual Studio 2015相关,但是我使用它与2017年的Visual Studio)。

祝你好运!

KTC非常丰富的主要答案的一小部分:

如果您正在使用免费的Visual Studio c ++ 2010 Express,并设法让它编译64位二进制文​​件,现在想要使用它来使用64位版本的Boost库文件,位库(你的里程可能会有所不同,但在我的机器上这是悲伤的情况)。

我可以解决这个问题,使用以下内容:介于上述步骤之间

启动一个32位MSVC命令提示符并切换到Boost解压缩的目录。

运行:bootstrap

我插入了一个调用'setenv'来设置环境。 对于发布版本,上面的步骤变成:

启动一个32位MSVC命令提示符并切换到Boost解压缩的目录。

运行:“C: Program files Microsoft SDKs windows v7.1 Bin setenv.cmd”/ Release / x64

运行:bootstrap

我在这里找到了这个信息: http : //boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.HTML

一个简单的例子,让你在Visual Studio中开始:

1.从这里下载并解压缩Boost。

创建一个Visual Studio空项目,使用一个不需要单独编译的示例boost库:

#include <iostream> #include <boost/format.hpp> using namespace std; using namespace boost; int main() { unsigned int arr[5] = { 0x05,0x04,0xAA,0x0F,0x0D }; cout << format("%02X-%02X-%02X-%02X-%02X") % arr[0] % arr[1] % arr[2] % arr[3] % arr[4] << endl; }

3.在您的Visual Studio项目属性中设置其他包含目录:

举一个非常简单的例子:

如何在Visual Studio中安装Boost库

如果你不想使用整个boost库,只是一个子集:

在windows中使用boost库的一个子集

如果您现在特别想要了解需要编译的库:

如何在windows中使用Boost编译的库

另外,还有一些我觉得非常有用的东西。 为升压路径使用环境变量。 (如何在windows中设置环境变量,底部为7,8,10链接) BOOST_ROOT变量似乎已经是常见的地方,并设置为解压缩的根路径。

然后在PropertIEs中,c ++,general,Additional Include DirectorIEs使用$(BOOST_ROOT) 。 然后如果/当你移动到更新版本的boost库,你可以更新你的环境变量来指向这个更新的版本。 随着更多的项目,使用boost,你将不必更新所有的“其他包含目录”。

您也可以创建一个BOOST_liB变量并将其指向该库的位置。 因此,对于链接器 – >其他库目录,您不必更新项目。 我用vs10构建了一些旧东西,用vs14构建了新东西,因此将boost lib的两个版本都构建到同一个文件夹中。 所以如果我把一个项目从vs10移到vs14,我不需要改变boost路径。

注意:如果你改变一个环境变量,它不会突然在一个打开的VS项目中工作。 VS在启动时加载变量。 所以你将不得不关闭VS并重新打开它。

总结

以上是内存溢出为你收集整理的如何在Visual Studio 2010中使用Boost全部内容,希望文章能够帮你解决如何在Visual Studio 2010中使用Boost所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1285148.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存