• 締切済み

OpenCV2.3 のエラー

Open CV2.3をVisual Studio2013 expresssに設定しました。 が、プログラムを実行すると 「エラー 3 error LNK1107: ファイルが無効であるか、または壊れています: 0x10B000 を読み取れません。 C:\Program Files\opencv\build\x64\vc10\staticlib\IlmImf.pdb...」 と表示されてしまい、困っています。 エラー原因は[リンカー]-[入力]-[追加の依存ファイル]の設定でしょうか。 当初、libとstaticlibフォルダの中にある、拡張子pbdを含む、重複なしのすべてのファイルを[追加の依存ファイル]に設定していましたが、これがエラーの原因かと思い、 libとstaticlibフォルダ内の、拡張子libのみに修正しました。 が、同じエラーが依然として出ています。 プログラムは以下の内容で、単純に画像を表示させるだけのものです。 ============================================= #include <cxcore.h> #include <cv.h> #include <highgui.h> int _tmain(int argc) { IplImage *src_img = 0, *dst_img; // (1)画像を読み込む src_img = cvLoadImage("C\\Users\\...\\thNDM091S8.jpg", CV_LOAD_IMAGE_COLOR); // (6)画像の表示 cvNamedWindow("Fitting", CV_WINDOW_AUTOSIZE); cvShowImage("Fitting", src_img); cvWaitKey(0); cvDestroyWindow("Fitting"); cvReleaseImage(&src_img); return 0; } ============================================== どこを直せばいいでしょうか。 いろいろと調べましたがわかりませんので、教えていただけると助かります。 よろしくお願いいたします。

みんなの回答

  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.3

pdb ファイルが有るということは、自分で OpenCV をビルドされたのでしょうか。 ビルド済みパッケージをインストールして、同様にやってみてはどうでしょうか? それと、既に指摘がありますが、32bit ビルドでは 64bit のライブラリを静的リンクできなかったと思いますので、"...\x86\vc10\staticlib\..." にしてみてください。

参考URL:
https://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.9/opencv-2.4.9.exe/download
rosafilipes
質問者

お礼

アドバイスありがとうございました。 32bitと64bitで違いがあるのですね、気を付けます。 今回は私の設定ミスで、動的ライブラリを削除したところうまく動きました。 ビルド済みパッケージが何かよくわかっていませんが、 今後もし何かあればぜひ参考にさせていただきます。 せっかくアドバイスくださったのにお返事が遅くなりましてすみませんでした。

すると、全ての回答が全文表示されます。
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

う~ん… どっからOpenCV導入したんでしょう? http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.3.1/ の OpenCV-2.3.1-win-superpack.exe では… 「error C4996: 'cv::flann::Index_<T>': が古い形式として宣言されました。」 とか言われてしまいました。 ところで… 64Bitアプリケーションとしてプロジェクト作成されてます? 32Bitですか? >C:\Program Files\opencv\build\x64\vc10 では64Bitの指定のようですが。

rosafilipes
質問者

お礼

ありがとうございました。 64bitで作成しています。 すみません、動的ライブラリの登録を削除したらうまく動きました。 環境が変わりこちらにお返事を記入できず、遅くなり申し訳ありませんでした。

すると、全ての回答が全文表示されます。
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>libとstaticlibフォルダ内の、拡張子libのみに修正しました。 であれば…… >が、同じエラーが依然として出ています。 にはならない筈ですが? 少なくとも、 >「エラー3error LNK1107: ファイルが無効であるか、または壊れています: 0x10B000 を読み取れません。C:\Program Files\opencv\build\x64\vc10\staticlib\IlmImf.pdb... の拡張子は異なる筈です。 ということで、エラーメッセージを意訳するのではなく、そのまま貼り付けてくださいな。 # フォルダ名にアカウントの名前とか入っているようなら、そこはマスクして問題ありませんが。 # cvLoadImage("C\\Users\\...\\thNDM091S8.jpg", CV_LOAD_IMAGE_COLOR); のように。 で……ライブラリには静的リンク版と動的リンク版があると思われますが… >libとstaticlibフォルダ 両方ぶちこんだのならどっちをリンクしたらいいんでしょうかね? リンカーさんはどうやって判別しましょうか。 あと…意味的には同じかも知れませんが、 >IplImage *src_img = 0, *dst_img; ポインタを数値の0で初期化するのはちょっと……。 # 警告出ませんかね?

rosafilipes
質問者

お礼

とても素早い回答をありがとうございました! 確認しましたが、やはりpbdファイルを設定していません。 にも拘わらず、以下のエラーが出ます。 エラー 1 error LNK1107: ファイルが無効であるか、または壊れています: 0x10B000 を読み取れません。 C:\Program Files\opencv\build\x64\vc10\staticlib\IlmImf.pdb なお、実行可能ファイルはx86とx64両方のv10のbinを設定し、 インクルードは \opencv\build\include\opencv と \opencv\build\include   の2つを設定しています。 どこかほかに設定すべきところにしていない、など、あり得るでしょうか。 すみませんが、何かおわかりでしたらぜひ教えてください。 どうぞよろしくお願いいたします。

すると、全ての回答が全文表示されます。

専門家に質問してみよう