g ++ ld:找不到架构x86_64的符号

mbP*_*Pro 35 c++ gcc opencv

我正在尝试编译Sam Hare的Struck代码.

我使用的是mac OSX10.9,opencv 2.4.6和Eigen 2.0.17.

Eigen和opencv头存储在/ opt/local/include中,而opencv dylib存储在/ opt/local/lib中.

我修改了Hare的Makefile来处理这个文件夹.当我在终端上输入make时:

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
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

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)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

Nat*_*ate 25

当我只是尝试从两个不同的目标文件(main.o和add.o)创建可执行文件时,我有类似的警告/错误/失败.我正在使用命令:

gcc -o exec main.o add.o

但我的程序是一个C++程序.使用g++编译器解决了我的问题:

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

我总是觉得gcc可以自己解决这些问题.显然不是.我希望这有助于其他人搜索此错误.


mbP*_*Pro 9

终于解决了我的问题.

我在XCode中创建一个新的项目与源和从默认的libc ++改变了C++标准库与libstdc ++在这个这个.