Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

g++ ld: symbol(s) not found for architecture x86_64

Tags:

c++

gcc

opencv

I'm trying to compile the Sam Hare's Struck code.

I'm using mac OSX10.9, opencv 2.4.6 and Eigen 2.0.17.

Eigen and opencv headers are stored in /opt/local/include while opencv dylib in /opt/local/lib.

I modified the Hare's Makefile to work on this folder. When I type make on the terminal:

g++ -L/opt/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc src/Config.o src/Features.o src/HaarFeature.o src/HaarFeatures.o src/HistogramFeatures.o src/ImageRep.o src/LaRank.o src/MultiFeatures.o src/RawFeatures.o src/Sampler.o src/Tracker.o src/main.o src/GraphUtils/GraphUtils.o -o struck 

I get these errors:

Undefined symbols for architecture x86_64:   "cv::namedWindow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from:       _main in main.o   "cv::split(cv::Mat const&, std::__1::vector<cv::Mat, std::__1::allocator<cv::Mat> >&)", referenced from:       ImageRep::ImageRep(cv::Mat const&, bool, bool, bool) in ImageRep.o   "cv::imread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from:       _main in main.o   "cv::imshow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&)", referenced from:       LaRank::Debug() in LaRank.o       Tracker::Debug() in Tracker.o       _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) 

Any ideas? Thanks!

like image 722
mbPro Avatar asked Nov 06 '13 19:11

mbPro


People also ask

What is undefined symbols for architecture x86_64?

Why Is the Undefined Symbols for Architecture x86_64: Error Happening? This error is happening due to the lack of included values inside the declared statements in your code. The browser is going to render the information incorrectly and show this error, especially if you are working with Main and Similarity tools.

How do you fix undefined symbols for Architecture arm64?

Simple Solution Go to Target ->Linking -> other linker Flag and add $(inherited) in other linker flag in both Debug and Release.


2 Answers

I had a similar warning/error/failure when I was simply trying to make an executable from two different object files (main.o and add.o). I was using the command:

gcc -o exec main.o add.o

But my program is a C++ program. Using the g++ compiler solved my issue:

g++ -o exec main.o add.o

I was always under the impression that gcc could figure these things out on its own. Apparently not. I hope this helps someone else searching for this error.

like image 51
Nate Avatar answered Sep 22 '22 05:09

Nate


finally solved my problem.

I created a new project in XCode with the sources and changed the C++ Standard Library from the default libc++ to libstdc++ as in this and this.

like image 44
mbPro Avatar answered Sep 23 '22 05:09

mbPro