VS2015+Armadillo+HDF5

几年未登录CSDN,想想这两天折腾的内容,还是写一写mark一下,希望也能帮到别人。最近在写一些计算相关的代码,开始在win下用C#写,但后来发现计算量挺大,想跑到linux服务器上,测试了一下mono,效率有些打折,没办法,可能需要用C/C++重写了。

查了一些资料,发现Armadillo这个库挺好上手,于是开始了折腾之旅。代码有读取HDF5文件的需求,在Linux和Mac下都好办,装好hdf5的库,编译一下armadillo,gcc编译时加-larmadillo就可以了。win下用的VS2015,弄起来就略麻烦了,编译一般都OK,问题出在链接上,懒得描述了,直接上步骤。

1. 下载armadillo,http://sourceforge.net/projects/arma/files/armadillo-8.300.3.tar.xz

2. 你用64位程序,在压缩包的examples/lib_win64下有lapack和blas库,可以直接用,否则在http://ylzhao.blogspot.com.au/2013/10/blas-lapack-precompiled-binaries-for.html下载。一版32位能运行在64位系统上,但64位程序就不一定能在32位上运行,为了通用性,我下载了32位。

3.解压armadillo到某目录,假设为e:\armadillo,包含文件夹armadillo\include等子目录;

4.解压LAPACK_Release_x86.zip到某目录,假设为e:\lapack,包含2个dll和2个lib文件;

5.下载安装hdf5到某目录,如D:\Program Files\HDF_Group\HDF5\1.8.20,包含include、bin、lib等子目录;

6.创建一个vs2015的c++工程,更改配置选项:

(1)项目-->xx项目属性-->C/C++-->常规,附加包含目录,增加:e:\armadillo\include;D:\Program Files\HDF_Group\HDF5\1.8.20\include

(2)项目-->xx项目属性-->C/C++-->预处理器,预处理器定义,删除_DEBUG;增加H5_BUILT_AS_DYNAMIC_LIB;最终如:

WIN32;H5_BUILT_AS_DYNAMIC_LIB;_CONSOLE;%(PreprocessorDefinitions)

(3)项目-->xx项目属性-->C/C++-->代码生成,运行库,改为:多线程DLL(/MD)

(4)项目-->xx项目属性-->链接器-->常规,附加库目录,增加:e:\lapack;D:\Program Files\HDF_Group\HDF5\1.8.20\include\lib

(5)项目-->xx项目属性-->链接器-->输入,附加依赖项,增加:szip.lib;zlib.lib;hdf5.lib;hdf5_cpp.lib;lapack_win32_MT.lib;blas_win32_MT.lib;其实也不是都需要,看代码需求,有一般不会出错;

(6)修改e:\armadillo\include\armadillo_bits\config.hpp文件,去掉#define ARMA_USE_HDF5前面的注释。

(7)简单测试代码:

#include <iostream>
#include <armadillo>
#include "hdf5.h"

using namespace std;
using namespace arma;

int main()
{
mat Mat;
string filename = "file.h5";
Mat.load(hdf5_name(filename));
Mat.print("Mat");
return 0;
}


这里file.h5文件是事先准备的h5文件;

(8)先生成一下解决方案;可能会报错,打开工程的Debug目录,也就是exe文件的生成目录,放入以下文件:

blas_win32_MT.dll

lapack_win32_MT.dll

hdf5.dll

szip.dll

zip.dll

hdf5_cpp.dll

然后再运行,以上操作后测试通过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值