kyamagu / mexopencv

Collection and a development kit of matlab mex functions for OpenCV library
http://kyamagu.github.io/mexopencv
Other
661 stars 319 forks source link

error : mexopencv/+cv/getBuildInformation.mexa64' invalid: #424

Closed gongshichina closed 5 years ago

gongshichina commented 5 years ago

@amroamroamro

when I call cv.getBuildInformation(), it produces the following error: and whatever else function, it keeps almost the same error.

At mexopencv compile stage, I use matlab 2017, it supports gcc 4.9, and I use newer gcc complied mexopencv, it made warning, and it shows mex successful finally.

And at the compiling opencv stage, when I check the output of pkg-config to verify the installation as the instructions, the output seems to be fine. (pkg-config --modversion opencv and pkg-config --cflags --libs opencv)

I will appreciate it if you can reply me. THANKS !

the error output:

>> cv.getBuildInformation()
Error using cv.getBuildInformation
Invalid MEX-file '/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64':
Missing symbol '_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc' required by '/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_' required by '/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm' required by '/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_' required by '/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZdaPvm' required by '/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZdlPvm' required by '/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZdaPvm' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZdlPvm' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcmm' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEcm' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEm' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EES4_' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZTTNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZTTNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZTTNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZTVNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZTVNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'
Missing symbol '_ZTVNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE' required by '/usr/local/lib/libopencv_core.so.3.4->/usr/local/lib/libopencv_imgproc.so.3.4->/home/shi/cv/mexopencv/+cv/getBuildInformation.mexa64'.
amroamroamro commented 5 years ago

See the troubleshooting section of the wiki:

https://github.com/kyamagu/mexopencv/wiki/Troubleshooting-(UNIX)

The cause of the errors is that your MATLAB version officially supports "GCC C/C++ 4.9.x" as compilers on Linux (you are expected you to compile MEX-file using gcc-4.9 compilers). But current Ubuntu versions ship with newer versions by default (gcc-5 or gcc-6 if I recall), so you'd be using them to compile opencv/mexopencv, hence the incompatibility and missing symbols errors (the ones you've shown are mostly from the C++ runtime library).

Besides downgrading GCC, one solution is to force-load incompatible libraries, by preloading the system libs you built opencv/mexopencv against, rather than getting the ones bundled with matlab.

As explained in the wiki link above, you run something like:

$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/lib/x86_64-linux-gnu/libgcc_s.so.1 matlab

You'd normally run ldd on the mex-file both inside MATLAB and outside in the Bash terminal to find the conflicting libraries.