C++ プロジェクトでRob Hess の SIFT ライブラリを使用しようとしています。他の SIFT 実装 (のコード) も調べましたが、これは元の Lowe の論文のように最も段階的に分割されていて、私が慣れ親しんでいる OpenCV も使用しているように見えたので、これを選択しました。
残念ながら、C++ で使用して以来、問題が発生しただけです。ライブラリは、もともと OpenCV を使用して C で記述されています。
C ライブラリの include-s を で囲む場合としない場合の両方でコードをコンパイルしようとしましextern
たが、どちらも機能しません。どちらの場合も問題が何であるかを診断したと思いますが、それらを解決する方法がわかりません。助けていただければ幸いです。
問題(または少なくとも、私が問題だと思うもの):
withouth
extern
: C++ の名前マングリングが原因で動作しません (私はチェックしましたが、もちろんすべての関数名は装飾されています)with
extern
: OpenCV は C または C++ 用にコンパイルされた天気を検出できるため、機能しません。SIFT ライブラリ関数のいずれにもリンケージの問題はありませんが、現在 OpenCV には C++ ヘッダーが含まれており、メイン プログラムでは最終的にextern
ブロックに含まれているため、次のような (文字通り何百もの) エラーが発生します。/usr/local/include/opencv2/core/mat.hpp:2361: error: template with C linkage
私はこの数日間、これを機能させようとしてきたので、誰かが C++ で同じ SIFT ライブラリを使用しようとした場合、または別のライブラリで同様の問題を経験したことがある場合は、助けていただければ幸いです。