1

OpenCVライブラリの静的ライブラリをプロジェクトにリンクしようとしていますが、次のエラーが発生します。

Undefined symbols for architecture armv7:
  "__ZN2cv9ExceptionC1EiRKSsS2_S2_i", referenced from:
      __ZL16icvGenerateQuadsPP8CvCBQuadPP10CvCBCornerP12CvMemStorageP5CvMati in libopencv_calib3d.a(calibinit.o)
      _cvFindChessboardCorners in libopencv_calib3d.a(calibinit.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

その記号「ZN2cv9ExceptionC1EiRKSsS2_S2_i」がどうあるべきか、静的ライブラリの構築に使用したソースファイルまたはヘッダーファイルで見つかった文字列がどうあるべきかわかりません。

リンカーの経験が豊富な人は、これらのエラーについて説明してもらえますか?

編集:01.07。これはまだ解決されていません。calib3dによるチェッカーボード検出をオプトアウトし、リンクエラーのないfeatures2Dを使用したより複雑でない円検出を行いました。

4

2 に答える 2

1

ほとんどの場合、OpenCV ライブラリを間違った順序で配置しています。リンク リストで次の順序を試してください。

opencv_contrib opencv_legacy opencv_videostab opencv_photo opencv_stitching opencv_objdetect opencv_video opencv_ml opencv_calib3d opencv_features2d opencv_highgui opencv_flann opencv_imgproc opencv_core

于 2012-06-27T18:19:56.430 に答える
0

を使用c++filtして、未定義のシンボルをアンマングルして、実際の関数名を見つけることができます。

$ c++filt.exe __ZN2cv9ExceptionC1EiRKSsS2_S2_i
cv::Exception::Exception(int, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)

次に、この関数を含むソース ファイルを特定し、それに対応するライブラリにリンクする必要があります。

于 2012-06-27T18:26:59.123 に答える