電子書籍の厳選無料作品が豊富!

Open CV2.3をVisual Studio2013 expresssに設定しました。
が、プログラムを実行すると
「エラー3error 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;
}
==============================================

どこを直せばいいでしょうか。
いろいろと調べましたがわかりませんので、教えていただけると助かります。
よろしくお願いいたします。

A 回答 (3件)

pdb ファイルが有るということは、自分で OpenCV をビルドされたのでしょうか。


ビルド済みパッケージをインストールして、同様にやってみてはどうでしょうか?

それと、既に指摘がありますが、32bit ビルドでは 64bit のライブラリを静的リンクできなかったと思いますので、"...\x86\vc10\staticlib\..." にしてみてください。

参考URL:https://sourceforge.net/projects/opencvlibrary/f …
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/10/06 21:53

う~ん…


どっからOpenCV導入したんでしょう?

http://sourceforge.net/projects/opencvlibrary/fi …

OpenCV-2.3.1-win-superpack.exe
では…
「error C4996: 'cv::flann::Index_<T>': が古い形式として宣言されました。」
とか言われてしまいました。

ところで…
64Bitアプリケーションとしてプロジェクト作成されてます?
32Bitですか?
>C:\Program Files\opencv\build\x64\vc10
では64Bitの指定のようですが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/10/06 21:51

>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で初期化するのはちょっと……。
# 警告出ませんかね?
    • good
    • 0
この回答へのお礼

とても素早い回答をありがとうございました!

確認しましたが、やはりpbdファイルを設定していません。
にも拘わらず、以下のエラーが出ます。


エラー1error LNK1107: ファイルが無効であるか、または壊れています: 0x10B000 を読み取れません。C:\Program Files\opencv\build\x64\vc10\staticlib\IlmImf.pdb

なお、実行可能ファイルはx86とx64両方のv10のbinを設定し、
インクルードは
\opencv\build\include\opencv と
\opencv\build\include   の2つを設定しています。

どこかほかに設定すべきところにしていない、など、あり得るでしょうか。
すみませんが、何かおわかりでしたらぜひ教えてください。
どうぞよろしくお願いいたします。

お礼日時:2014/08/18 09:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!