Symbols not found for architecture x86_64 MacOS Yosemite
-
@saeedBaba said in Symbols not found for architecture x86_64 MacOS Yosemite:
How can I reinstall opencv to be compatible?
You could build OpenCV by yourself using same compiler as you use for your Qt project.
See https://docs.opencv.org/master/d0/db2/tutorial_macos_install.html for details.But maybe we should first clarify that this is really the issue.
Can you post whole build log? At least the part where linker is called and its output. Usually linker would print a warning if it dismisses an incompatible library. -
@jsulm said in Symbols not found for architecture x86_64 MacOS Yosemite:
https://docs.opencv.org/master/d0/db2/tutorial_macos_install.html
it this the whole build log?
14:27:37: Running steps for project opencv_test_qmake... 14:27:37: Configuration unchanged, skipping qmake step. 14:27:37: Starting: "/usr/bin/make" -j8 /Users/apple/Qt6/6.1.1/clang_64/bin/qmake -o Makefile ../opencv_test_qmake/opencv_test_qmake.pro -spec macx-clang CONFIG+=debug CONFIG+=x86_64 CONFIG+=qml_debug /Library/Developer/CommandLineTools/usr/bin/clang++ -stdlib=libc++ -headerpad_max_install_names -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wl,-rpath,@executable_path/../Frameworks -Wl,-rpath,/Users/apple/Qt6/6.1.1/clang_64/lib -o opencv_test_qmake.app/Contents/MacOS/opencv_test_qmake main.o dialog.o moc_dialog.o -F/Users/apple/Qt6/6.1.1/clang_64/lib -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_features2d -lopencv_highgui -lopencv_calib3d -framework QtWidgets -framework QtGui -framework AppKit -framework ImageIO -framework Metal -framework QtCore -framework DiskArbitration -framework IOKit -framework AGL -framework OpenGL Undefined symbols for architecture x86_64: "cv::imread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from: _main in main.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: *** [opencv_test_qmake.app/Contents/MacOS/opencv_test_qmake] Error 1 14:27:37: The process "/usr/bin/make" exited with code 2. Error while building/deploying project opencv_test_qmake (kit: Desktop Qt 6.1.1 clang 64bit) When executing step "Make" 14:27:37: Elapsed time: 00:00.
if not, where can I find it?
-
@saeedBaba Looks good.
Please try to add opencv_imcodec to LIBS as I suggested before. I think this is the lib where cv::imread is actually defined. -
@jsulm said in Symbols not found for architecture x86_64 MacOS Yosemite:
opencv_imcodec
same error:
15:19:32: Running steps for project opencv_test_qmake... 15:19:33: Starting: "/Users/apple/Qt6/6.1.1/clang_64/bin/qmake" /usr/local/lib/C++Project/Qt6/opencv_test_qmake/opencv_test_qmake.pro -spec macx-clang CONFIG+=debug CONFIG+=x86_64 CONFIG+=qml_debug Info: creating stash file /usr/local/lib/C++Project/Qt6/build-opencv_test_qmake-Desktop_Qt_6_1_1_clang_64bit-Debug/.qmake.stash 15:19:33: The process "/Users/apple/Qt6/6.1.1/clang_64/bin/qmake" exited normally. 15:19:33: Starting: "/usr/bin/make" -f /usr/local/lib/C++Project/Qt6/build-opencv_test_qmake-Desktop_Qt_6_1_1_clang_64bit-Debug/Makefile qmake_all make: Nothing to be done for `qmake_all'. 15:19:33: The process "/usr/bin/make" exited normally. 15:19:33: Starting: "/usr/bin/make" -j8 /Users/apple/Qt6/6.1.1/clang_64/libexec/uic ../opencv_test_qmake/dialog.ui -o ui_dialog.h /Library/Developer/CommandLineTools/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++1z -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wall -Wextra -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../opencv_test_qmake -I. -I../../../../include/opencv4 -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtWidgets.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtGui.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/mkspecs/macx-clang -F/Users/apple/Qt6/6.1.1/clang_64/lib -o main.o ../opencv_test_qmake/main.cpp /Library/Developer/CommandLineTools/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++1z -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wall -Wextra -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../opencv_test_qmake -I. -I../../../../include/opencv4 -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtWidgets.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtGui.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/mkspecs/macx-clang -F/Users/apple/Qt6/6.1.1/clang_64/lib -o dialog.o ../opencv_test_qmake/dialog.cpp /Library/Developer/CommandLineTools/usr/bin/clang++ -pipe -stdlib=libc++ -g -std=gnu++1z -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wall -Wextra -dM -E -o moc_predefs.h /Users/apple/Qt6/6.1.1/clang_64/mkspecs/features/data/dummy.cpp /Users/apple/Qt6/6.1.1/clang_64/libexec/moc -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB --include /usr/local/lib/C++Project/Qt6/build-opencv_test_qmake-Desktop_Qt_6_1_1_clang_64bit-Debug/moc_predefs.h -I/Users/apple/Qt6/6.1.1/clang_64/mkspecs/macx-clang -I/usr/local/lib/C++Project/Qt6/opencv_test_qmake -I/usr/local/include/opencv4 -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtWidgets.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtGui.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -I/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/usr/include -F/Users/apple/Qt6/6.1.1/clang_64/lib ../opencv_test_qmake/dialog.h -o moc_dialog.cpp /Library/Developer/CommandLineTools/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++1z -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wall -Wextra -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../opencv_test_qmake -I. -I../../../../include/opencv4 -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtWidgets.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtGui.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/mkspecs/macx-clang -F/Users/apple/Qt6/6.1.1/clang_64/lib -o moc_dialog.o moc_dialog.cpp /Library/Developer/CommandLineTools/usr/bin/clang++ -stdlib=libc++ -headerpad_max_install_names -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wl,-rpath,@executable_path/../Frameworks -Wl,-rpath,/Users/apple/Qt6/6.1.1/clang_64/lib -o opencv_test_qmake.app/Contents/MacOS/opencv_test_qmake main.o dialog.o moc_dialog.o -F/Users/apple/Qt6/6.1.1/clang_64/lib -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_features2d -lopencv_highgui -lopencv_calib3d -opencv_imcodec -framework QtWidgets -framework QtGui -framework AppKit -framework ImageIO -framework Metal -framework QtCore -framework DiskArbitration -framework IOKit -framework AGL -framework OpenGL Undefined symbols for architecture x86_64: "cv::imread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from: _main in main.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: *** [opencv_test_qmake.app/Contents/MacOS/opencv_test_qmake] Error 1 15:19:36: The process "/usr/bin/make" exited with code 2. Error while building/deploying project opencv_test_qmake (kit: Desktop Qt 6.1.1 clang 64bit) When executing step "Make" 15:19:36: Elapsed time: 00:03.
Need Reputation to post more often.
-
@saeedBaba Did you do a complete rebuild after changing pro file? Delete build folder, run qmake and build?
-
Need more reputation to post faster.
15:19:32: Running steps for project opencv_test_qmake... 15:19:33: Starting: "/Users/apple/Qt6/6.1.1/clang_64/bin/qmake" /usr/local/lib/C++Project/Qt6/opencv_test_qmake/opencv_test_qmake.pro -spec macx-clang CONFIG+=debug CONFIG+=x86_64 CONFIG+=qml_debug Info: creating stash file /usr/local/lib/C++Project/Qt6/build-opencv_test_qmake-Desktop_Qt_6_1_1_clang_64bit-Debug/.qmake.stash 15:19:33: The process "/Users/apple/Qt6/6.1.1/clang_64/bin/qmake" exited normally. 15:19:33: Starting: "/usr/bin/make" -f /usr/local/lib/C++Project/Qt6/build-opencv_test_qmake-Desktop_Qt_6_1_1_clang_64bit-Debug/Makefile qmake_all make: Nothing to be done for `qmake_all'. 15:19:33: The process "/usr/bin/make" exited normally. 15:19:33: Starting: "/usr/bin/make" -j8 /Users/apple/Qt6/6.1.1/clang_64/libexec/uic ../opencv_test_qmake/dialog.ui -o ui_dialog.h /Library/Developer/CommandLineTools/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++1z -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wall -Wextra -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../opencv_test_qmake -I. -I../../../../include/opencv4 -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtWidgets.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtGui.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/mkspecs/macx-clang -F/Users/apple/Qt6/6.1.1/clang_64/lib -o main.o ../opencv_test_qmake/main.cpp /Library/Developer/CommandLineTools/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++1z -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wall -Wextra -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../opencv_test_qmake -I. -I../../../../include/opencv4 -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtWidgets.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtGui.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/mkspecs/macx-clang -F/Users/apple/Qt6/6.1.1/clang_64/lib -o dialog.o ../opencv_test_qmake/dialog.cpp /Library/Developer/CommandLineTools/usr/bin/clang++ -pipe -stdlib=libc++ -g -std=gnu++1z -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wall -Wextra -dM -E -o moc_predefs.h /Users/apple/Qt6/6.1.1/clang_64/mkspecs/features/data/dummy.cpp /Users/apple/Qt6/6.1.1/clang_64/libexec/moc -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB --include /usr/local/lib/C++Project/Qt6/build-opencv_test_qmake-Desktop_Qt_6_1_1_clang_64bit-Debug/moc_predefs.h -I/Users/apple/Qt6/6.1.1/clang_64/mkspecs/macx-clang -I/usr/local/lib/C++Project/Qt6/opencv_test_qmake -I/usr/local/include/opencv4 -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtWidgets.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtGui.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -I/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/usr/include -F/Users/apple/Qt6/6.1.1/clang_64/lib ../opencv_test_qmake/dialog.h -o moc_dialog.cpp /Library/Developer/CommandLineTools/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++1z -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wall -Wextra -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../opencv_test_qmake -I. -I../../../../include/opencv4 -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtWidgets.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtGui.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/mkspecs/macx-clang -F/Users/apple/Qt6/6.1.1/clang_64/lib -o moc_dialog.o moc_dialog.cpp /Library/Developer/CommandLineTools/usr/bin/clang++ -stdlib=libc++ -headerpad_max_install_names -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wl,-rpath,@executable_path/../Frameworks -Wl,-rpath,/Users/apple/Qt6/6.1.1/clang_64/lib -o opencv_test_qmake.app/Contents/MacOS/opencv_test_qmake main.o dialog.o moc_dialog.o -F/Users/apple/Qt6/6.1.1/clang_64/lib -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_features2d -lopencv_highgui -lopencv_calib3d -opencv_imcodec -framework QtWidgets -framework QtGui -framework AppKit -framework ImageIO -framework Metal -framework QtCore -framework DiskArbitration -framework IOKit -framework AGL -framework OpenGL Undefined symbols for architecture x86_64: "cv::imread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from: _main in main.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: *** [opencv_test_qmake.app/Contents/MacOS/opencv_test_qmake] Error 1 15:19:36: The process "/usr/bin/make" exited with code 2. Error while building/deploying project opencv_test_qmake (kit: Desktop Qt 6.1.1 clang 64bit) When executing step "Make" 15:19:36: Elapsed time: 00:03.
-
@saeedBaba I don't see -lopencv_imcodec in the linker call.
Please post your current pro file, it looks like you forgot to put - in -opencv_imcodec -> should be -lopencv_imcodec
And I think it should be: -lopencv_imgcodecs -
@jsulm said in Symbols not found for architecture x86_64 MacOS Yosemite:
-lopencv_imcodec
QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++11 # You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ main.cpp \ dialog.cpp HEADERS += \ dialog.h FORMS += \ dialog.ui #INCLUDEPATH += /usr/local/Cellar/opencv/4.5.2_4/include/opencv4 #LIBS += -L/usr/local/Cellar/opencv/4.5.2_4/lib \ # -lopencv_core \ # -lopencv_imgproc \ # -lopencv_features2d\ # -lopencv_highgui # -lopencv_imcodec # -lopencv_calib3d #INCLUDEPATH += /usr/local/include/opencv4 #LIBS += -L/usr/local/lib \ # -lopencv_core \ # -lopencv_imgproc \ # -lopencv_features2d\ # -lopencv_highgui # -lopencv_calib3d # -lopencv_imcodec #QMAKE_MACOSX_DEPLOYMENT_TARGET = 11.0 # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target macx { INCLUDEPATH += /usr/local/include/opencv4 QMAKE_MACOSX_DEPLOYMENT_TARGET = 11.0 LIBS += -L/usr/local/lib LIBS += -lopencv_core -lopencv_imgproc -lopencv_features2d -lopencv_highgui -lopencv_calib3d -lopencv_imcodec }
LOG:
/Users/apple/Qt6/6.1.1/clang_64/bin/qmake -o Makefile ../opencv_test_qmake/opencv_test_qmake.pro -spec macx-clang CONFIG+=debug CONFIG+=x86_64 CONFIG+=qml_debug /Library/Developer/CommandLineTools/usr/bin/clang++ -stdlib=libc++ -headerpad_max_install_names -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wl,-rpath,@executable_path/../Frameworks -Wl,-rpath,/Users/apple/Qt6/6.1.1/clang_64/lib -o opencv_test_qmake.app/Contents/MacOS/opencv_test_qmake main.o dialog.o moc_dialog.o -F/Users/apple/Qt6/6.1.1/clang_64/lib -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_features2d -lopencv_highgui -lopencv_calib3d -lopencv_imcodec -framework QtWidgets -framework QtGui -framework AppKit -framework ImageIO -framework Metal -framework QtCore -framework DiskArbitration -framework IOKit -framework AGL -framework OpenGL ld: library not found for -lopencv_imcodec clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [opencv_test_qmake.app/Contents/MacOS/opencv_test_qmake] Error 1 15:39:26: The process "/usr/bin/make" exited with code 2. Error while building/deploying project opencv_test_qmake (kit: Desktop Qt 6.1.1 clang 64bit) When executing step "Make" 15:39:26: Elapsed time: 00:00.
-
@saeedBaba said in Symbols not found for architecture x86_64 MacOS Yosemite:
-lopencv_imcodec
-lopencv_imgcodecs
-
@saeedBaba said in Symbols not found for architecture x86_64 MacOS Yosemite:
How can I know what libraries to include for the future? how should I check?
In case of OpenCV you can see in the documentation URL: https://docs.opencv.org/3.4/d4/da8/group__imgcodecs.html and from the include header (at least in this case):
#include <opencv2/imgcodecs.hpp>
-
@jsulm said in Symbols not found for architecture x86_64 MacOS Yosemite:
for example, I get the same error for this code:
1- where should I check for what to include?#include "opencv2/core.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" #include "opencv2/videoio.hpp" #include <iostream> using namespace cv; using namespace std; void drawText(Mat & image); int main() { cout << "Built with OpenCV " << CV_VERSION << endl; Mat image; VideoCapture capture; capture.open(0); if(capture.isOpened()) { cout << "Capture is opened" << endl; for(;;) { capture >> image; if(image.empty()) break; drawText(image); imshow("Sample", image); if(waitKey(10) >= 0) break; } } else { cout << "No capture" << endl; image = Mat::zeros(480, 640, CV_8UC1); drawText(image); imshow("Sample", image); waitKey(0); } return 0; } void drawText(Mat & image) { putText(image, "Hello OpenCV", Point(20, 50), FONT_HERSHEY_COMPLEX, 1, // font face and scale Scalar(255, 255, 255), // white 1, LINE_AA); // line thickness and type }
2- Is there any way to include the whole thing in .pro file and then just include required hpp in the cpp file? I do the same thing when using CMake.
-
@saeedBaba said in Symbols not found for architecture x86_64 MacOS Yosemite:
Is there any way to include the whole thing in .pro file
You should only link what is really needed. Else you will have to provide libs which are not used by your app making your package unnecessary big.
"I get the same error for this code" - if it is the same error, then the solution is also same.
But I guess the error is not same? Please post the error. -
Log file for the code with videocapture .
16:21:02: Running steps for project opencv_test_qmake... 16:21:02: Starting: "/Users/apple/Qt6/6.1.1/clang_64/bin/qmake" /usr/local/lib/C++Project/Qt6/opencv_test_qmake/opencv_test_qmake.pro -spec macx-clang CONFIG+=debug CONFIG+=x86_64 CONFIG+=qml_debug Info: creating stash file /usr/local/lib/C++Project/Qt6/build-opencv_test_qmake-Desktop_Qt_6_1_1_clang_64bit-Debug/.qmake.stash 16:21:03: The process "/Users/apple/Qt6/6.1.1/clang_64/bin/qmake" exited normally. 16:21:03: Starting: "/usr/bin/make" -f /usr/local/lib/C++Project/Qt6/build-opencv_test_qmake-Desktop_Qt_6_1_1_clang_64bit-Debug/Makefile qmake_all make: Nothing to be done for `qmake_all'. 16:21:03: The process "/usr/bin/make" exited normally. 16:21:03: Starting: "/usr/bin/make" -j8 /Users/apple/Qt6/6.1.1/clang_64/libexec/uic ../opencv_test_qmake/dialog.ui -o ui_dialog.h /Library/Developer/CommandLineTools/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++1z -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wall -Wextra -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../opencv_test_qmake -I. -I../../../../include/opencv4 -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtWidgets.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtGui.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/mkspecs/macx-clang -F/Users/apple/Qt6/6.1.1/clang_64/lib -o main.o ../opencv_test_qmake/main.cpp /Library/Developer/CommandLineTools/usr/bin/clang++ -pipe -stdlib=libc++ -g -std=gnu++1z -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wall -Wextra -dM -E -o moc_predefs.h /Users/apple/Qt6/6.1.1/clang_64/mkspecs/features/data/dummy.cpp /Library/Developer/CommandLineTools/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++1z -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wall -Wextra -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../opencv_test_qmake -I. -I../../../../include/opencv4 -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtWidgets.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtGui.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/mkspecs/macx-clang -F/Users/apple/Qt6/6.1.1/clang_64/lib -o dialog.o ../opencv_test_qmake/dialog.cpp /Users/apple/Qt6/6.1.1/clang_64/libexec/moc -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB --include /usr/local/lib/C++Project/Qt6/build-opencv_test_qmake-Desktop_Qt_6_1_1_clang_64bit-Debug/moc_predefs.h -I/Users/apple/Qt6/6.1.1/clang_64/mkspecs/macx-clang -I/usr/local/lib/C++Project/Qt6/opencv_test_qmake -I/usr/local/include/opencv4 -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtWidgets.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtGui.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -I/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/usr/include -F/Users/apple/Qt6/6.1.1/clang_64/lib ../opencv_test_qmake/dialog.h -o moc_dialog.cpp /Library/Developer/CommandLineTools/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++1z -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wall -Wextra -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../opencv_test_qmake -I. -I../../../../include/opencv4 -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtWidgets.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtGui.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AGL.framework/Headers -I/Users/apple/Qt6/6.1.1/clang_64/mkspecs/macx-clang -F/Users/apple/Qt6/6.1.1/clang_64/lib -o moc_dialog.o moc_dialog.cpp /Library/Developer/CommandLineTools/usr/bin/clang++ -stdlib=libc++ -headerpad_max_install_names -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=11.0 -Wl,-rpath,@executable_path/../Frameworks -Wl,-rpath,/Users/apple/Qt6/6.1.1/clang_64/lib -o opencv_test_qmake.app/Contents/MacOS/opencv_test_qmake main.o dialog.o moc_dialog.o -F/Users/apple/Qt6/6.1.1/clang_64/lib -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_features2d -lopencv_highgui -lopencv_calib3d -lopencv_imgcodecs -framework QtWidgets -framework QtGui -framework AppKit -framework ImageIO -framework Metal -framework QtCore -framework DiskArbitration -framework IOKit -framework AGL -framework OpenGL Undefined symbols for architecture x86_64: "cv::VideoCapture::open(int, int)", referenced from: _main in main.o "cv::VideoCapture::VideoCapture()", referenced from: _main in main.o "cv::VideoCapture::~VideoCapture()", referenced from: _main in main.o "cv::VideoCapture::operator>>(cv::Mat&)", referenced from: _main in main.o "cv::VideoCapture::isOpened() const", referenced from: _main in main.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: *** [opencv_test_qmake.app/Contents/MacOS/opencv_test_qmake] Error 1 16:21:06: The process "/usr/bin/make" exited with code 2. Error while building/deploying project opencv_test_qmake (kit: Desktop Qt 6.1.1 clang 64bit) When executing step "Make" 16:21:06: Elapsed time: 00:04.
-
-
@saeedBaba said in Symbols not found for architecture x86_64 MacOS Yosemite:
How did you find it?
From the include file name. This is very OpenCV specific, maybe there is some documentation/explanation in that project.
-
@saeedBaba I googled for cv::VideoCapture and got https://docs.opencv.org/3.4/d8/dfe/classcv_1_1VideoCapture.html where you can see the include:
#include <opencv2/videoio.hpp>
And in case of OpenCV it looks like a header file corresponds to a lib: videoio.hpp -> opencv_videoio
But this is so in case of OpenCV, not necesserily every lib out there!Qt does it more clear: it tells you what to add to pro file to use a class. For example in https://doc.qt.io/qt-5/qwidget.html you can see:
QT += widgets
-
@jsulm said in Symbols not found for architecture x86_64 MacOS Yosemite:
https://docs.opencv.org/3.4/d8/dfe/classcv_1_1VideoCapture.html
but this link does not mention anything about -lopencv_videoio
How did you find that?