George Profenza - 2021-03-14

Hi,

I've just discovered ucoslam (videos look amazing!)
Thank you Rafael Muñoz-Salinas for sharing this wealth of information openly.

I did try to compile and got the same error on both OSX and Windows and I suspect this is where I need to RTFM :)

ucoslam-1.1.0/src/utils/frameextractor.cpp:6389:13: error: use of undeclared identifier 'mempcpy'; did you mean 'memcpy'?
            mempcpy mKzDQjDDFy9nfjTcIGEjn        
            ^~~~~~~
            memcpy

I get the same mempcpy error on Windows (VS 2019).
Doing a quick search I see on Linux it should be as simple as including string.h,
however I can't seem to find the equivalent include for Windows / OSX.

Going with the hacky approach of simply swapping mempcpy with memcpy gets more further, but surprisingly I get into linking errors with aruco_array_calibrate:

1>ucoslam_array_calibrate.obj : error LNK2019: unresolved external symbol "class cv::Mat __cdecl ucoslam::getRTMatrix(class cv::Mat const &,class cv::Mat const &,int)" (?getRTMatrix@ucoslam@@YA?AVMat@cv@@AEBV23@0H@Z) referenced in function main
1>stereo_calibration.obj : error LNK2001: unresolved external symbol "class cv::Mat __cdecl ucoslam::getRTMatrix(class cv::Mat const &,class cv::Mat const &,int)" (?getRTMatrix@ucoslam@@YA?AVMat@cv@@AEBV23@0H@Z)
1>stereo_calibration.obj : error LNK2019: unresolved external symbol "void __cdecl ucoslam::getRTfromMatrix44(class cv::Mat const &,class cv::Mat &,class cv::Mat &,bool)" (?getRTfromMatrix44@ucoslam@@YAXAEBVMat@cv@@AEAV23@1_N@Z) referenced in function "public: void __cdecl <lambda_f3aef653115e980519e8a0ebf220e7c9>::operator()(class Eigen::Matrix<double,-1,1,0,-1,1> const &,class Eigen::Matrix<double,-1,1,0,-1,1> &)const " (??R<lambda_f3aef653115e980519e8a0ebf220e7c9>@@QEBAXAEBV?$Matrix@N$0?0$00$0A@$0?0$00@Eigen@@AEAV12@@Z)
1>C:\dev\cv\ucoslam-1.1.0\build\bin\Release\ucoslam_array_calibrate.exe : fatal error LNK1120: 2 unresolved externals

As far as I can see those methods do exist (in ucoslam's misc.cpp) and the VS project includes the path to the lib files and the 6 libs (ucoslam_aruco.lib, ucoslam110.lib, ucoslam_fbow.lib, ucoslam_xflann.lib, ucoslam_g2o_core.lib, ucoslam_g2o_stuff.lib).

Any hints on to link correctly ?