NumCpp即numpy对应的c++库。配置NumCpp首先需要配置好Boost库。Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。本文参照相关资料,详细介绍在windows10+vs2017环境下Boost与NumCpp的配置方法。
1.准备条件
(1)克隆numcpp项目:https://github.com/dpilger26/NumCpp
(2)下载boost安装包:https://www.boost.org/users/history/version_1_67_0.html

2.安装Boost

安装Boost有两种安装方法。一种是源码编译,另一种是直接下载安装好的二进制文件进行安装。本文以下详细介绍这两种方法。

VS怎么安装jQuery vs怎么安装numpy库_VS怎么安装jQuery

(1)源码编译
如上图所示,下载相应的源码压缩包,并解压。解压时间比较长,需要耐心等待。

解压之后的文件如下:

VS怎么安装jQuery vs怎么安装numpy库_python_02

双击批处理文件:bootstrap.bat

接下来需要会得到一个b2.exe文件,我们需要使用这个文件去编译源码并得到lib库文件。此出建议以管理有身份进入Windows PowerShell(有些用windows的小伙伴不太适应用shell,没有关系,照着做就行),进入的方式如下

在开始图标

VS怎么安装jQuery vs怎么安装numpy库_VS怎么安装jQuery_03


上右击,可得:

VS怎么安装jQuery vs怎么安装numpy库_VS怎么安装jQuery_04


单机Windows PowerShell(管理员),即以管理员身份进入。

输入命令

cd D:\boost_1_76_0

其中D:\boost_1_76_0是你解压boost_1_76_0.zip的文件夹路径。
接下来输入以下命令:

.\b2.exe --link=shared --toolset=msvc-14.1 --stagedir="D:\Boost64" --address-model=64 --architecture=x64

此处解释命令的含义:

–link=shared :生成动态链接库
 –toolset=msvc-14.1:编译的库在vs2017环境下运行
 –stagedir=“D:\Boost64”:编译库所在的目录,此处可以新建一个文件夹。
 –address-model=64:生成64位平台库
 –architecture=x64:可在vs x64平台下调试。(实际会生成32位的库和64位库)

在PowerShell中如下图所示输入命令:

VS怎么安装jQuery vs怎么安装numpy库_#include_05


回车即开始编译,等待一两分钟后编译结束,在D:\Boost64(我之前是编译在D:\Boost文件夹下)得到编译好的lib文件。

VS怎么安装jQuery vs怎么安装numpy库_#include_06


接下来测试Boost是否配置成功。

打开vs,新建一个控制台程序。右击项目名称–属性,并添加库目录:

VS怎么安装jQuery vs怎么安装numpy库_python_07


首先将解压得到的安装目录D:\boost_1_76_0加入:

VS怎么安装jQuery vs怎么安装numpy库_boost库_08


之后加入编译得到的库目录D:\Boost64\lib(我这儿加入的是D:\Boost\lib):

VS怎么安装jQuery vs怎么安装numpy库_c++_09


然后在主程序中输入以下代码:

#include<iostream>
#include<stdio.h>

#include<boost/version.hpp>	//包含boost头文件
#include<boost/config.hpp>

int main() {
	using namespace std;
	cout << BOOST_VERSION << endl;
	cout << BOOST_LIB_VERSION << endl;
	cout << BOOST_PLATFORM << endl;
	cout << BOOST_COMPILER << endl;
	cout << BOOST_STDLIB << endl;

	system("pause");
	return 0;
}

调试运行,可以得到如图结果,表面boost库配置成功:

VS怎么安装jQuery vs怎么安装numpy库_VS怎么安装jQuery_10


注意:如果是在x64平台下调试,则配置的时候也要选择x64平台,否则会出错。

VS怎么安装jQuery vs怎么安装numpy库_python_11


VS怎么安装jQuery vs怎么安装numpy库_python_12


(2)直接下载二进制文件

如果不想搞这么麻烦,直接下载二进制文件安装。如之前的图所示,点击Windows Binaries后,下载如图所示exe文件(boost_1_67_0-msvc-14.1-64.exe):

VS怎么安装jQuery vs怎么安装numpy库_boost库_13


双击安装包选择相应的安装目录:

VS怎么安装jQuery vs怎么安装numpy库_VS怎么安装jQuery_14


安装好后,得到库文件。接下来的步骤与使用源码编译的步骤类似,在链接器——常规中加入:D:\boost_1_76_0_1\lib64-msvc-14.1,在c/c++中加入:D:\boost_1_76_0_1。

3.编译NumCpp
在PowerShell中进入NumCpp的文件目录,输入以下命令:

cd D:\NumCpp-master

之后可以在NumCpp工程目录下手动建立一个build文件夹:

VS怎么安装jQuery vs怎么安装numpy库_VS怎么安装jQuery_15


然后输入下面两条命令:

cd build#进入build文件夹

>> cmake ..#编译build上一层目录中的CMakeLists

关于cmake的内容有些小伙伴不理解,这儿没关系。推荐一个讲cmake的教程,虽然是在ubuntu下,但是cmake的代码都是想通的,有兴趣小伙伴可以学习一下:
https://www.bilibili.com/video/BV1fy4y1b7TC

这一步编译完成后,输入下一条cmake命令:

cmake --build . --target install

到此为止NumCpp都编译完成。Numpy编译得到的文件默认在C:\Program Files (x86)\NumCpp下,可以去看一看这个目录有没有相应的文件:

VS怎么安装jQuery vs怎么安装numpy库_python_16


接下来进入vs,类似加入Boost的库文件,加入Numpy的include文件夹目录:

VS怎么安装jQuery vs怎么安装numpy库_boost库_17


注意此时是进入VC++目录——包含目录。

接下来运行如下代码:

#include "NumCpp.hpp"

#include <cstdlib>
#include <iostream>

int main()
{
	auto a = nc::eye<double>(4);
	std::cout << a;

	return EXIT_SUCCESS;
}

运行得到如下结果:

VS怎么安装jQuery vs怎么安装numpy库_python_18

参考资料:



 https://dpilger26.github.io/NumCpp/doxygen/html/md__c_1__github__num_cpp_docs_markdown__installation.html

——————————分界线———————————————
集成完Numcpp用了一段时间后,发现自己的三维显示模块出现了一些很奇怪的问题。我的三维显示是用PCL库带的VTK+Qt做的,集成完Numcpp后发现设置点云的尺寸以及清除视图中的点云等功能都使用不了了,百思不得其解。后来发现原来PCL在安装时自带了一个boost库,以我的为例,boost库在D:\pcl2017\PCL 1.8.1\3rdParty\Boost\文件夹下。且PCL 1.8.1自带的boost库是1.64版本,上述介绍配置的boost库是1.76版本。一个项目中引入了两个不同版本的同一个库,自然会造成一些奇怪的问题。方法就是只保留一个boost库。由于需要与PCL配置相兼容,因此保留boost 1.64。即将上文所述的添加头文件与lib文件的文件夹替换,此处例子为:

D:\boost_1_76_0--->D:\pcl2017\PCL 1.8.1\3rdParty\Boost\include\boost-1_64

D:\Boost64\lib--->D:\pcl2017\PCL 1.8.1\3rdParty\Boost\lib

实际使用中发现,替换成boost 1.64在boost\math\special_functions文件夹下会少一个chebyshev.hpp文件,解决方法就是从boost 1.76的文件夹下将该文件复制过来即可。
心得:推荐使用高版本的PCL,此处由于不想大动环境,算是投机取巧。此外当工程中链入较多第三方库时,注意观察第三方库是否携带一些子库,会与其他第三方库的子库发生冲突。