1

私はしばらくOpenCVとimwrite関数を使用してきましたが、残念ながらこれはもう機能していません。

次のサンプル コードを使用して、OpenCV 2.4.3 で実行しています。

imwrite("somepath/somefile.png", myMat);

エラー:

Undefined symbols for architecture x86_64:
"cv::imwrite(std::string const&, cv::_InputArray const&, std::__debug::vector<int,     std::allocator<int> > const&)", referenced from:
MyProject::this_callback(int, void*) in MyProject.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

エラーはやや見慣れたものに見えますが、何が悪いのか判断できません。

ここに画像の説明を入力

4

3 に答える 3

4

はい、XCode を使用していると思いました。私も同じ問題を抱えていました。:)

プロジェクトの設定を次のように変更した場合:

  • GNU++11 を C++ 言語の方言として使用する
  • C++ 標準ライブラリとしての libstdc++ (GNU C++ 標準)

リンクの問題はなくなります。

Apple LLVM 4.1 を使用しています。


この問題が発生したとき、私が知っていた古いプロジェクトの 1 つに新しいターゲットを追加しようとしました。次に、そのターゲットを 1 つのソース ファイルのプログラムにしました。

再起動後に同じプロジェクトを機能させることができなかったことがあったと思うので、これは XCode の「魔法の」部分であるに違いありません。:S

于 2012-12-06T08:58:35.167 に答える
0

Barnabas が行ったことを行い、cvdef.h の問題も解決しました。私は必死になっていたので、ヘッダーファイルを変更しただけです。

/usr/local/cvdef.h 行 205:

私が変更され

include <cstdint>
typedef std::uint32_t uint;

に:

include <tr1/cstdint>
typedef std::tr1::uint32_t uint;

この投稿に基づいて

opencv 開発者は 64 ビット用のコードにいくつかの変更を適用する必要があると思います..

于 2013-12-23T01:07:03.490 に答える