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
--------------------- 
作者:illiteratehit 
来源:CSDN 
原文:https://blog.csdn.net/illiteratehit/article/details/82946183 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值