8

次のようにOpenCV 2.4をセットアップしようとしています:

  • プリコンパイル済みパッケージをダウンロードして解凍しましたC:\OpenCV240
  • Visual Studio ではC:\OpenCV240\build\include、追加のインクルード ディレクトリとして追加しました。
  • さらに、C:\OpenCV240\build\x86\vc10\staticlib追加のライブラリ ディレクトリとして追加しました。
  • また、利用可能なすべての .lib ファイルを追加の依存関係として指定しました。

「Hello World」プログラム (DLL を使用すると問題なくコンパイルされる) をコンパイルすると、次のような多くのエラー メッセージが表示されます。

1>msvcprtd.lib(MSVCP100D.dll): エラー LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) は opencv_core240d.lib(matrix) で既に定義されています.obj)

私は何を間違っていますか?

4

1 に答える 1

10

プログラムで静的 C ランタイム ライブラリに対するリンクを指定する必要があるようです。

OpenCV が静的 CRT に対してリンクされていて、動的 CRT を使用している場合、これらのタイプの再定義エラーが発生します。

この設定を変更するには、プロジェクトの [プロパティ] を開いて に移動しConfiguration Properties -> C/C++ -> Code Generationます。

Runtime LibraryからMulti-threaded Debug DLL (/MDd)に変更しMulti-threaded Debug (/MTd)ます。必要に応じてデバッグ以外のバリアントを使用して、他の構成についても同じことを行います。

于 2012-05-13T11:33:42.057 に答える