64位环境下,Armadillo + VS2010出现链接错误的解决

在学习数据挖掘和机器学习的时候,很多时候,用矩阵求解的方法是很简便的,但是C++要完成矩阵运算,自己写实现显然是工程浩大的。因此我们常常借助第三方函数库来解决问题。

找了好几天基本线性代数的库,看到有人推荐说Armadillo,看他给的安装教程也挺简单的,就尝试了一下。结果,弄了一整天才能够正常运行。罪魁祸首是编译器的编译环境设置问题

 

下面就具体说一下x64环境下,Armadillo + Vs2010的安装和配置方法。

1、  下载Armadillo(官网:http://arma.sourceforge.net/),得到下面的包;

                                                 

2、  将其解压,得到如下目录:

64位环境下,Armadillo + VS2010出现链接错误的解决_第1张图片

 

3、  用文本编辑器打开include/armadillo_bits/config.hpp,将下图中红框里的两句话去掉前面的注释符。去掉注释表示使用BLAS和LAPACK,据说能提高速度。

64位环境下,Armadillo + VS2010出现链接错误的解决_第2张图片

 

4、  打开VS2010,新建一个win32的工程;

64位环境下,Armadillo + VS2010出现链接错误的解决_第3张图片


5、  右击新建的项目,选择属性,出来下面的东西:

64位环境下,Armadillo + VS2010出现链接错误的解决_第4张图片


6、   选择VC++目录一项,将包含目录设置为你解压后,include文件夹的路径(记住,一定是知道include这一级,我就多进入了一级目录,错了。);

将库目录设置为解压后example里的lib文件夹;设置后如下:

64位环境下,Armadillo + VS2010出现链接错误的解决_第5张图片


7、   接着选C/C++里的常规项,设置附加包含目录,同样为上述的include文件夹路径:

64位环境下,Armadillo + VS2010出现链接错误的解决_第6张图片


8、   选择链接器/常规,将附加库目录设置为上述的lib文件夹路径:

64位环境下,Armadillo + VS2010出现链接错误的解决_第7张图片


9、  选择链接器/输入,将附加依赖项里添加lib文件夹里的两个lib文件:

64位环境下,Armadillo + VS2010出现链接错误的解决_第8张图片


10、             OK,点击确定,在cpp里写测试代码试一下:

#include 
#include 
using namespace arma;
int main()
{
	arma::mat A = arma::randu(1000, 1000) * 10;
	arma::mat B = arma::randu(1000, 1000) * 10;
	arma::mat C = A % B;
	//A.print("A = \n");
	cout << endl << A(3,3) << endl;
	A(3,3) = 0.111111;
	cout << endl << A(3,3) << endl;
	mat D;
	double arr[10]={1,2,3,4,5,6,7,8,9,10};
	D << arr[0] << arr[1] << arr[2] << endr
		<< arr[3] << arr[4] << arr[5] << endr
		<< arr[6] << arr[7] << arr[8] << endr;
	mat E = D.i();
	E.print();
	A.print("A = \n");
	B.print("B = \n");
	C.print("A .* B = \n");
	system("pause");
	return 0;
}


11、              是不是惊喜第发现,可以运行了??!!其实你错了,你在换个矩阵乘法,矩阵求逆测试一下!看到了吧!傻眼!

64位环境下,Armadillo + VS2010出现链接错误的解决_第9张图片


12、              上网狂搜各种教程和问题,都没找到解决办法。后来有个人的帖子提醒了我,说32位的lib和64位的lib是有区别的,混用可能会出这样的链接问题,因此,将编译器的编译环境改为x64的。

13、              选择生成/配置管理器:

64位环境下,Armadillo + VS2010出现链接错误的解决_第10张图片


14、              在出来的框框里,在平台那里新建一个x64的,图中为已经建了x64的,所以有x64的选项。

64位环境下,Armadillo + VS2010出现链接错误的解决_第11张图片


15、             是不是觉得这下子可以用了呢?编译一下,哟西,编译成功了,运行呢?提示缺少dll文件。哈哈,别急,还有装个MinGW。装完之后在安装目录的bin文件夹里就可以找到所需的dll文件。将其拷贝到编译出来的exe所在的文件夹里。

16、              最后还差一步,就是把上述Armadillo的lib文件夹里的两个dll文件也拷到exe所在的文件夹里,OK,可以了。

 

 

【】

其实,在这里(http://icl.cs.utk.edu/lapack-for-windows/lapack/#libraries_mingw)已经把运行LAPACK的要求写得很清楚了,一步步弄完就ok了。

其实问题的关键是,你下载到的lib是32位的还是64位的,根据这个来调整一下编译器的编译环境就可以了。

你可能感兴趣的:(vs2010,64位,Armadillo)