在头文件Knearsearch.h中
#ifndef KnearSearch_H_
#define KnearSearch_H_
#ifdef KnearSearch
#define KnearSearch extern "C" _declspec(dllimport)
#else
#define KnearSearch extern "C" _declspec(dllexport)
#endif // KnearSearch
KnearSearch void KNS(float* SP, float* cloud, int size, int k, int* indices, float* dist);
#endif
#include
#include "KnearSearch.h"
using namespace std;
void KNS(float* SP, float* cloud, int size, int k, int* indices, float* dist)
{
flann::Index
> flannindex(flann::Matrix
(cloud, size, 3), flann::KDTreeSingleIndexParams(15));
flannindex.buildIndex();
flann::Matrix
indices_mat(indices, k, 1); flann::Matrix
dist_mat(dist, k, 1); vector
searchpoint(3, 3); flannindex.knnSearch(flann::Matrix
(SP, 1, 3), indices_mat, dist_mat, k, flann::SearchParams(-1, 0.0f)); }
#include <KnearSearch.h>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
float a[] = { 1, 4, 3, 1, 3, 3, 2, 2, 2 };
float p[] = { 1, 1, 1 };
int size = 3;
int k = 1;
int indice[1];
float dist[1];
KNS(p, a, size, k, indice, dist);
cout << indice[0] << endl;
cout << dist[0] << endl;
return 0;
}
得到结果
成功