Windows下利用VS2017编译flann

一、预先编译HDF5

Step 1: 下载源码

官方下载地址:https://support.hdfgroup.org/HDF5/release/cmakebuild518.html
点击表格中Software下的Windows链接下载
在这里插入图片描述

Step 2: 解压并编译

解压下载到的:CMake-hdf5-1.8.20.zip。注意:路径中不要有空格。
在这里插入图片描述
右键build-VS2015-64.bat,编辑参数:
ctest -S HDF5config.cmake,BUILD_GENERATOR=VS2017 -C Release -V -O hdf5.log
这里按照需要修改为VS2017。
进入命令行:运行build-VS2015-64.bat,等待编译完成,大约需要10分钟左右。若顺利,编译成功。

二、编译flann

Step 1: 源码下载

地址:https://github.com/mariusmuja/flann

Step 2: 源码编译

利用cmake-gui进行编译,1)Configure, 2)Generate, 3)Open Project (“flann.sln”)
注意:要在x64和Release模式下进行编译。若顺利,编译成功。

三、flann调试

flann在源码中flann-master/examples/flann_example.cpp提供了测试用例。

Step 1: 新建Solution

新建一个Solution,比如flann-test。新建一个demo.cpp文件,将flann_example.cpp的全部内容拷贝其中。

#include <flann/flann.hpp>
#include <flann/io/hdf5.h>

#include <stdio.h>

using namespace flann;

int main(int argc, char** argv)
{
	int nn = 3;

	Matrix<float> dataset;
	Matrix<float> query;
	load_from_file(dataset, "dataset.hdf5", "dataset");
	load_from_file(query, "dataset.hdf5", "query");

	Matrix<int> indices(new int[query.rows*nn], query.rows, nn);
	Matrix<float> dists(new float[query.rows*nn], query.rows, nn);

	// construct an randomized kd-tree index using 4 kd-trees
	Index<L2<float> > index(dataset, flann::KDTreeIndexParams(4));
	index.buildIndex();

	// do a knn search, using 128 checks
	index.knnSearch(query, indices, dists, nn, flann::SearchParams(128));

	flann::save_to_file(indices, "result.hdf5", "result");

	delete[] dataset.ptr();
	delete[] query.ptr();
	delete[] indices.ptr();
	delete[] dists.ptr();

	return 0;
}
Step 2: 配置项目

1)在Configuration Properties->VC++ Directories->Include Directories中添加:
i. D:\Open Libraries\flann-master\src\cpp(flann中源码所含头文件)
ii. D:\CMake-hdf5-1.8.20\build (HDF5中编译目录中的头文件)
iii. D:\CMake-hdf5-1.8.20\hdf5-1.8.20\src (HDF5中源码所含头文件)
2)在Configuration Properties->VC++ Directories->Library Directories中添加:
i. D:\Open Libraries\flann-master\build\lib\Release (flann中编译的的静态库)
ii. D:\CMake-hdf5-1.8.20\build\bin\Release (HDF5中编译的静态库)
3)在Configuration Properties->VC++ Directories->Linker->Input->Additional Dependencies中添加:
flann_cpp.lib
libhdf5.lib
libhdf5_cpp.lib
libzlib.lib
libszip.lib

Step 3: 下载调试所需dataset.hdf5文件

网址:http://www.cs.ubc.ca/research/flann/uploads/FLANN/datasets/dataset.hdf5

Step 4: 可能遇到的问题

1)编译时报pop_t问题的解决
编译时会报pop_t identifier not found的错误,参考:https://github.com/mariusmuja/flann/issues/386
将typedef unsigned long long pop_t移到宏定义前,如图:
在这里插入图片描述
将原有位置的此句注释掉即可,如图:
在这里插入图片描述
2)执行时报找不到flann_cpp.dll的解决
拷贝flann_cpp.dll到project根目录。

Step 5: 编译并执行

若执行成功,会生成result.hdf5文件,表示编译并执行成功。

四、参考:

[1] https://github.com/mariusmuja/flann
[2] https://blog.csdn.net/hjq376247328/article/details/62224635
[3] https://blog.csdn.net/maweifei/article/details/80961541
[4] https://github.com/mariusmuja/flann/issues/386
[5] https://github.com/mariusmuja/flann/issues/354

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值