ANN error when executing make
Hi,
i a getting the following error when trying to make. Any help is appreciated.
[ 98%] Building CXX object src/CMakeFiles/acg_localizer_active_search.dir/acg_localizer_active_search.cc.o /home/datascience10/place recognition/ACG_Localizer_v_1_2_2/src/acg_localizer_active_search.cc: In function ‘int main(int, char**)’: /home/datascience10/place recognition/ACG_Localizer_v_1_2_2/src/acg_localizer_active_search.cc:1091:66: error: cannot convert ‘ANNcoord* {aka double*}’ to ‘float*’ in assignment points_per_component[ cc_id ][ cc_point_counter[ cc_id ] ] = points3D[i]; ^ /home/datascience10/place recognition/ACG_Localizer_v_1_2_2/src/acg_localizer_active_search.cc:1103:57: error: invalid conversion from ‘float**’ to ‘int’ [-fpermissive] kd_trees[i] = new ANNkd_tree( points_per_component[i], nb_points_3D_int, 3 ); ^ In file included from /home/datascience10/place recognition/ACG_Localizer_v_1_2_2/src/acg_localizer_active_search.cc:72:0: /home/datascience10/place recognition/ann_1.1.2/include/ANN/ANN.h:724:2: error: initializing argument 1 of ‘ANNkd_tree::ANNkd_tree(int, int, int)’ [-fpermissive] ANNkd_tree( // build skeleton tree ^ src/CMakeFiles/acg_localizer_active_search.dir/build.make:614: recipe for target 'src/CMakeFiles/acg_localizer_active_search.dir/acg_localizer_active_search.cc.o' failed make[2]: *** [src/CMakeFiles/acg_localizer_active_search.dir/acg_localizer_active_search.cc.o] Error 1 CMakeFiles/Makefile2:241: recipe for target 'src/CMakeFiles/acg_localizer_active_search.dir/all' failed make[1]: *** [src/CMakeFiles/acg_localizer_active_search.dir/all] Error 2 Makefile:127: recipe for target 'all' failed make: *** [all] Error 2
Hi, I have a luck by substituting the datatype of the points_per_component from float to ANNcoord. Since ANNcoord is a double datatype, which is similar to float, I assume it would be safe to do so. Summarily, you can take a look at line 1075 on src/acg_localizer_active_search.cc. Change it from:
float **points_per_component[ nb_connected_components ];
to:
ANNcoord **points_per_component[ nb_connected_components ];
also at line 1091. Change it from:
points_per_component[i] = new float*[ nb_points_per_component[i] ];
to
points_per_component[i] = new ANNcoord*[ nb_points_per_component[i] ];
I hope it helps