web-dev-qa-db-ja.com

g ++ ld:アーキテクチャx86_64のシンボルが見つかりません

Sam Hareの Struck code をコンパイルしようとしています。

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)

何か案は?ありがとう!

35
mbPro

2つの異なるオブジェクトファイル(main.oおよびadd.o)から実行可能ファイルを作成しようとしたときに、同様の警告/エラー/エラーが発生しました。私はコマンドを使用していました:

gcc -o exec main.o add.o

しかし、私のプログラムはC++プログラムです。 g++コンパイラは私の問題を解決しました:

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

私は常に、gccがこれらのことを自分で理解できるという印象を受けていました。どうやら。これが他の誰かがこのエラーを検索するのに役立つと思います。

25
Nate

最終的に私の問題を解決しました。

ソースを使用してXCodeに新しいプロジェクトを作成し、C++標準ライブラリをデフォルトのlibc ++から this および this のようにlibstdc ++に変更しました。

9
mbPro