g ld:未找到架构 x86_64 的符号

新手上路,请多包涵

我正在尝试编译 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

我收到这些错误:

 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)

有任何想法吗?谢谢!

原文由 mbPro 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 368
1 个回答

我遇到了同样的错误。我不认为这是一个“修复”,但我的解决方法是也包含 cpp 文件。所以,而不是仅仅把

#include "MyClass.h"

我必须把

#include "MyClass.h"
#include "MyClass.cpp"

原文由 Rhino 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题