2014-12-18 6 views
2

Я собираю conv-net (http://conv-net.sourceforge.net/) глубокую библиотеку обучения opencv и C++ на моем mac osx, и я не могу пройти эту ошибку. Это, похоже, проблема связи. Все библиотеки opencv скомпилированы для 64 бит, я попытался установить флаг -m64 в cmake, но пока не работает._cvLoadImage undefined symbol linking issue

Я не знаю, в какую библиотеку _cvLoadImage() ссылки в ??? я правильно привязываюсь к соответствующим библиотекам, но не могу исправить эту ошибку ?????

Undefined symbols for architecture x86_64: 
    "_cvLoadImage", referenced from: 
     _main in testimg.cpp.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make[2]: *** [testimg] Error 1 
make[1]: *** [CMakeFiles/testimg.dir/all] Error 2 

я сделал вывод -v линкера, и он показывает это ...

Linking CXX executable testimg 
Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn) 
Target: x86_64-apple-darwin14.0.0 
Thread model: posix 
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -dynamic -arch x86_64 -macosx_version_min 10.10.0 -o testimg -search_paths_first -headerpad_max_install_names CMakeFiles/testimg.dir/tst/testimg.cpp.o libcvconvnet.a -lopencv_core -lopencv_highgui -lexpat -lopencv_imgproc -lopencv_photo -lopencv_shape -lopencv_features2d -lopencv_ml -lopencv_objdetect -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/lib/darwin/libclang_rt.osx.a 
+0

'cvLoadImage()' находится в модуле HighGUI. Знаете ли вы, где вы установили OpenCV, и если это возможно, вы можете запустить 'nm /usr/local/lib/libopencv_highgui.dylib | grep cvLoadImage' (или аналогичный, соответствующим образом измените путь) и сообщите нам, если вы получаете что-то похожее на '0000000000016ef0 T_cvLoadImage'? –

+0

Спасибо :) Это сработало !!! – pbu

+0

@IwillnotexistIdonotexist Добавьте этот комментарий в качестве ответа. – karlphillip

ответ

2

В OpenCV 3.1.0 я не смог найти недостающие символы в /usr/local/lib/libopencv_highgui.dylib, а в /usr/local/lib/libopencv_imgcodecs.dylib.

Так что добавьте -lopencv_imgcodecs в свою команду компиляции.

 Смежные вопросы

  • Нет связанных вопросов^_^