Symbols not found in architecture x86_64



  • ERROR OUTPUT IN APPLICATION:
    :-1: error: symbol(s) not found for architecture x86_64:-
    1: error: linker command failed with exit code 1 (use -v to see invocation)

    Im desperately trying to get my code running this is an integration with openCV , could someone please help explain these errors to me or why my code doesn't work? thanks in advance; I'm using opencv 3.1.0

    #include "mainwindow.h"
    #include <QApplication>
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/videoio/videoio.hpp>
    #include<opencv2/objdetect/objdetect.hpp>
    #include<opencv2/imgproc/imgproc.hpp>
    #include<vector>
    #include<string>
    
    #include <iostream>
    #include<stdio.h>
    
    using namespace cv;
    using namespace std;
    
    CascadeClassifier face_cascade;
    
    
    
    void detectFaces(Mat frame) {
    
      vector<Rect> faces;
      Mat frame_gray;
      cvtColor(frame, frame_gray, COLOR_BGR2GRAY);  // Convert to gray scale
      equalizeHist(frame_gray, frame_gray);   	// Equalize histogram
    
      // Detect faces
      face_cascade.detectMultiScale(frame_gray, faces, 1.1, 3,
                    0|CASCADE_SCALE_IMAGE, Size(30, 30));
    
      // Iterate over all of the faces
      for( size_t i = 0; i < faces.size(); i++ ) {
    
        // Find center of faces
        Point center(faces[i].x + faces[i].width/2, faces[i].y + faces[i].height/2);
    
        // Draw ellipse around face
        ellipse(frame, center, Size(faces[i].width/2, faces[i].height/2),
            0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );
      }
    
      imshow( "window",frame);  // Display frame
    }
    
    
    
    
    int main(int argc, char *argv[]){
        QApplication a(argc, argv);
        MainWindow w;
     // cam code
    try{
    
    
            VideoCapture cap(0);        // Open default camera
              Mat frame;
    
              // Load preconstructed classifier
              face_cascade.load("haarcascade_frontalface_alt.xml");
    
              while(cap.read(frame)) {
                detectFaces(frame);       // Call function to detect faces
                if( waitKey(30) >= 0)     // Pause key
                    break;
              }
    }catch(Exception ex){
    std::cout << "Unable to initiate camera" << std::endl;
        }
        //end cam code
    
    
    
        w.show();
    return a.exec();
    }
    
    
    
    

  • Lifetime Qt Champion

    Hi,

    What symbols are missing ?

    Are you sure you have linked to all the necessary libs ?

    Are they of the correct architecture ?



  • This is my PRO file below, thanks for your reply; Im not quite sure i really don't understand whats going on, I have been able to get the live camera feed from my code but when implementing the face detection in openCV I am getting this issue .pro file as follows:

    #-------------------------------------------------
    #
    # Project created by QtCreator 2016-05-25T01:38:34
    #
    #-------------------------------------------------
    
    QT       += core gui
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = Origin
    TEMPLATE = app
    
    
    SOURCES += main.cpp\
            mainwindow.cpp
    
    
    LIBS += \
    -L/usr/local/lib \
    -lopencv_core \
    -lopencv_highgui \
    -lopencv_videoio \
    -lopencv_objdetect
    
    
    INCLUDEPATH += \
        /usr/local/include
    
    HEADERS  += mainwindow.h
    
    FORMS    += mainwindow.ui
    
    

  • Lifetime Qt Champion

    Looks fine but again: what symbols are missing ?



  • Symbols in what context? Im fairly new to Qt apologies for being a little slow in advance but this is my compile output:
    If you are asking a specific question ill gladly get the info needed if you could just show me where i can find this, thanks again for your help

    16:32:52: Running steps for project Origin...
    16:32:52: Configuration unchanged, skipping qmake step.
    16:32:52: Starting: "/usr/bin/make" 
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -mmacosx-version-min=10.7 -Wall -W -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../Origin -I. -I/usr/local/include -I../../Qt/5.6/clang_64/lib/QtWidgets.framework/Headers -I../../Qt/5.6/clang_64/lib/QtGui.framework/Headers -I../../Qt/5.6/clang_64/lib/QtCore.framework/Headers -I. -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I../../Qt/5.6/clang_64/mkspecs/macx-clang -F/Users/travishaycock/Qt/5.6/clang_64/lib -o main.o ../Origin/main.cpp
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -headerpad_max_install_names -stdlib=libc++ -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -mmacosx-version-min=10.7 -Wl,-rpath,/Users/travishaycock/Qt/5.6/clang_64/lib -o Origin.app/Contents/MacOS/Origin main.o mainwindow.o moc_mainwindow.o   -F/Users/travishaycock/Qt/5.6/clang_64/lib -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_videoio -lopencv_objdetect -framework QtWidgets -framework QtGui -framework QtCore -framework OpenGL -framework AGL 
    Undefined symbols for architecture x86_64:
      "cv::equalizeHist(cv::_InputArray const&, cv::_OutputArray const&)", referenced from:
          detectFaces(cv::Mat) in main.o
      "cv::ellipse(cv::_InputOutputArray const&, cv::Point_<int>, cv::Size_<int>, double, double, double, cv::Scalar_<double> const&, int, int, int)", referenced from:
          detectFaces(cv::Mat) in main.o
      "cv::cvtColor(cv::_InputArray const&, cv::_OutputArray const&, int, int)", referenced from:
          detectFaces(cv::Mat) 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: *** [Origin.app/Contents/MacOS/Origin] Error 1
    16:32:55: The process "/usr/bin/make" exited with code 2.
    Error while building/deploying project Origin (kit: Desktop Qt 5.6.0 clang 64bit)
    When executing step "Make"
    16:32:55: Elapsed time: 00:03.
    

  • Lifetime Qt Champion

    That's nothing Qt specific, it's standard C++.

    You are not linking to the OpenCV module that provides these symbols. For example equalizeHist comes from imgproc



  • This post is deleted!

Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.