Programme und Versionen: Windows 10, Mingw32 mit gcc 6.1.0, 3.6.1 Cmake, (Code :: Blocks 16.01)undefiniert Bezug auf cv :: redirectError während Shared-Build von OpenCV 3.1 mit Mingw Erstellung
Zunächst sollte ich erwähnen, dass das Erstellen eines statischen Builds einwandfrei funktioniert. Das Erstellen eines gemeinsamen Builds funktioniert nicht und ich finde keine Problemumgehungen für mein spezifisches Problem.
Ich habe versucht, OpenCV3.1 mit den oben genannten Programmen als Shared Build zu bauen. Die Verwendung von Standardeinstellungen des cmake, bekomme ich folgende Fehlermeldung:
[ 34%] Linking CXX executable ..\..\bin\opencv_test_core.exe
../../lib/libopencv_ts310.a(ts.cpp.obj):ts.cpp:(.text$_ZN6cvtest2TS4initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x119): undefined reference to `cv::redirectError(int (*)(int, char const*, char const*, char const*, int, void*), void*, void**)'
collect2.exe: error: ld returned 1 exit status
modules\core\CMakeFiles\opencv_test_core.dir\build.make:885: recipe for target 'bin/opencv_test_core.exe' failed
mingw32-make[2]: *** [bin/opencv_test_core.exe] Error 1
CMakeFiles\Makefile2:1713: recipe for target 'modules/core/CMakeFiles/opencv_test_core.dir/all' failed
mingw32-make[1]: *** [modules/core/CMakeFiles/opencv_test_core.dir/all] Error 2
Makefile:159: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
Standardeinstellungen in meinem Fall bedeutet (unter anderem): BUILD_TBB = aus, BUILD_WITH_DYNAMIC_IPP = aus, BUILD_opencv_world = aus, ENALBE_OMIT_FRAME_POINTER = on, ENABLE_SSE/SSE2/SSE3 = on, WITH_IPP und WITH_IPP_A = off (dies scheint in einigen Fällen bei Aktivierung ein häufiges Problem zu verursachen).
Die Frage ist jetzt: Was bedeutet dieser Fehler und wie man es repariert?
Offensichtlich fehlt eine Funktion: undefined reference to `cv::redirectError(int (*)(int, char const*, char const*, char const*, int, void*), void*, void**)
. den Quellcode der Suche gibt einige Definitionen dieser Funktion in
system.cpp
: Linie 662:redirectError(CvErrorCallback errCallback, void* userdata, void** prevUserdata)
utility.hpp
: Linie 174:CV_EXPORTS ErrorCallback redirectError(ErrorCallback errCallback, void* userdata=0, void** prevUserdata=0);
Aber die undefined reference will einige eine char-Zeiger als Parameter int , aber ich finde eine solche Funktion in keiner Quelldatei.
Beim Deaktivieren BUILD_EXAMPLES/PERF_TESTS/TESTS (wie woanders vorgeschlagen) dies das Problem nicht beheben, sondern gibt das gleiche Problem später:
[ 95%] Linking CXX shared library ..\..\bin\libopencv_calib3d310.dll
CMakeFiles\opencv_calib3d.dir/objects.a(calibinit.cpp.obj):calibinit.cpp:(.text$_ZN2cv15findCirclesGridERKNS_11_InputArrayENS_5Size_IiEERKNS_12_OutputArrayEiRKNS_3PtrINS_9Feature2DEEE+0x426): undefined reference to `cv::redirectError(int (*)(int, char const*, char const*, char const*, int, void*), void*, void**)'
CMakeFiles\opencv_calib3d.dir/objects.a(calibinit.cpp.obj):calibinit.cpp:(.text$_ZN2cv15findCirclesGridERKNS_11_InputArrayENS_5Size_IiEERKNS_12_OutputArrayEiRKNS_3PtrINS_9Feature2DEEE+0x44d): undefined reference to `cv::redirectError(int (*)(int, char const*, char const*, char const*, int, void*), void*, void**)'
collect2.exe: error: ld returned 1 exit status
modules\calib3d\CMakeFiles\opencv_calib3d.dir\build.make:787: recipe for target 'bin/libopencv_calib3d310.dll' failed
mingw32-make[2]: *** [bin/libopencv_calib3d310.dll] Error 1
CMakeFiles\Makefile2:3634: recipe for target 'modules/calib3d/CMakeFiles/opencv_calib3d.dir/all' failed
mingw32-make[1]: *** [modules/calib3d/CMakeFiles/opencv_calib3d.dir/all] Error 2
Makefile:159: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
ich sonst jeden Fehlerbericht, oder etwas gefunden havn't in Bezug auf diesen Fehler.
Ich musste auch '' calibinit.cpp'' auf die gleiche Weise (zweimal) ändern, aber dann kompiliert es ohne Fehler. Vielen Dank! – Phann