Symbols not found for architecture x86_64 MacOS Yosemite



  • Hi there!

    I'm really new in all of this, and I don't know anything about terminal and stuff... I (think) installed openCV 2.4.10 and qtCreator 3.3.0 using terminal commands:

    1. cd /Users/Sergio/Downloads/opencv-2.4.9
    2. mkdir build
    3. cd build
    4. cmake -G "Unix Makefiles" ..
    5. make -j8
    6. sudo make install

    It seems ok, folders appear on usr/local/... I don't know how to use QtCreator so I create a console project and add this to the .pro:

    @
    #-------------------------------------------------

    Project created by QtCreator 2015-02-18T09:40:59

    #-------------------------------------------------

    QT += core

    QT -= gui

    TARGET = cosa
    CONFIG += console
    CONFIG -= app_bundle

    TEMPLATE = app

    QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9

    SOURCES += main.cpp

    INCLUDEPATH += "/usr/local/include" \

    LIBS += -L"/usr/local/lib"
    -lopencv_core
    -lopencv_highgui

    @

    Then into the main.cpp added this (from an example i got online):

    @
    #include "opencv2/opencv.hpp"
    #include "opencv2/highgui/highgui.hpp"

    using namespace cv;

    int main( int argc, char **argv)
    {
    Mat image = imread( argv[1], CV_LOAD_IMAGE_COLOR );

    namedWindow( "Original", CV_WINDOW_NORMAL | CV_WINDOW_KEEPRATIO | CV_GUI_EXPANDED );
    imshow( "Original", image );

    // Sobel example from http://docs.opencv.org/doc/user_guide/ug_mat.html#visualizing-images
    Mat gray;

    cvtColor( image, gray, CV_BGR2GRAY );

    Mat sobelx;

    Sobel( gray, sobelx, CV_32F, 1, 0 );

    double minVal = 0.0;
    double maxVal = 0.0;

    minMaxLoc( sobelx, &minVal, &maxVal ); //find minimum and maximum intensities

    Mat draw;

    sobelx.convertTo( draw, CV_8U, 255.0/(maxVal - minVal), -minVal * 255.0/(maxVal - minVal) );

    namedWindow( "Sobel", CV_WINDOW_NORMAL | CV_WINDOW_KEEPRATIO | CV_GUI_EXPANDED );
    imshow( "Sobel", draw );

    while ( waitKey( 33 ) != 27 )
    ;

    return 0;
    }

    @

    When I click on Run (is that the way I should do that?) in the issue section displays:

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

    And the compile output shows this:

    @09:59:55: Running steps for project cosa...
    09:59:55: Configuration unchanged, skipping qmake step.
    09:59:55: Starting: "/usr/bin/make"
    /Users/Sergio/Qt5.4.0/5.4/clang_64/bin/qmake -spec macx-clang CONFIG+=debug CONFIG+=x86_64 -o Makefile ../cosa/cosa.pro
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -headerpad_max_install_names -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -mmacosx-version-min=10.9 -Wl,-rpath,/Users/Sergio/Qt5.4.0/5.4/clang_64/lib -o cosa main.o -F/Users/Sergio/Qt5.4.0/5.4/clang_64/lib -L/usr/local/lib -lopencv_core -lopencv_highgui -framework QtCore -framework DiskArbitration -framework IOKit
    Undefined symbols for architecture x86_64:
    "cv::namedWindow(std::string const&, int)", referenced from:
    _main in main.o
    "cv::Sobel(cv::_InputArray const&, cv::_OutputArray const&, int, int, int, int, double, double, int)", referenced from:
    _main in main.o
    "cv::imread(std::string const&, int)", referenced from:
    _main in main.o
    "cv::imshow(std::string const&, cv::_InputArray const&)", referenced from:
    _main in main.o
    "cv::cvtColor(cv::_InputArray const&, cv::_OutputArray const&, int, int)", referenced from:
    _main in main.o
    "std::allocator<char>::allocator()", referenced from:
    _main in main.o
    "std::allocator<char>::~allocator()", referenced from:
    _main in main.o
    "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)", referenced from:
    _main in main.o
    "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()", referenced from:
    _main in main.o
    "std::ios_base::Init::Init()", referenced from:
    ___cxx_global_var_init in main.o
    "std::ios_base::Init::~Init()", referenced from:
    ___cxx_global_var_init 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: *** [cosa] Error 1
    09:59:55: The process "/usr/bin/make" exited with code 2.
    Error while building/deploying project cosa (kit: Desktop Qt 5.4.0 clang 64bit)
    When executing step "Make"
    09:59:55: Elapsed time: 00:00.@

    Why is that? can anybody help me, please? I read a lot about it but i can't understand a word :(

    I need to start using this programs in a class and i don't have any idea about anything!!

    Thank you :)


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Are you use you've built OpenCV for x86_64 ? (should be but who knows…)

    Call "file" one of the OpenCV libraries to check



  • I just downloaded the one suggested by the website on MacOS so i guess so... i don't know how to call file, how should I do that?


  • Lifetime Qt Champion

    @file /usr/local/lib/libopencv_core.dylib@

    Correct the library file name as needed


Log in to reply
 

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