質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.13%

opencvインストール LNK1104エラー

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 5,426

oknd1

score 13

前提・実現したいこと

opencvのインストール, コンパイル

発生している問題・エラーメッセージ

CMakeを使ってopencvのインストールを試みています。
主に
http://qiita.com/tomochiii/items/fa26404ebc5fcd4481b9
http://www.buildinsider.net/small/opencv/003
の両サイトを参考にしながら作業を進め、インストールできたと思ったのですが、確認のため上記Qiitaの記事最後のソースがちゃんとコンパイルできるかvisual studioでビルドしたところ、

LNK1104    ファイル 'opencv_core320d.lib' を開くことができません。    


と言われてできませんでした。調べたところ
https://teratail.com/questions/38613
が同じ問題内容だったのでそちらの回答を参考に
OpenCV(の中のCMakeTargets>INSTALL)のDebug指定でのビルドをしたところ、ここでは

LNK1104    ファイル 'python36_d.lib' を開くことができません。


と言われてできていない状態です。これに関しても同じ問題に関する質問:
http://answers.opencv.org/question/68148/lnk1104-cannot-open-file-python34_dlib/
が見つかったので参考にしようと思ったのですが回答はReleaseでやれというもので、Debugでビルドできなければ意味がないのではないかと思うのですが違うのでしょうか?この質問者と同様に自分もReleaseでのビルドは問題なくできています。

後者のLNK1104のエラーが解決できれば前者も解決できると思っています。どのようにすればよいのかご教示いただければ幸いです。

該当のソースコード

#pragma warning(disable:4819)
#ifdef _DEBUG
#define CV_EXT "d.lib"
#else
#define CV_EXT ".lib"
#endif
#pragma comment(lib, "opencv_core320" CV_EXT)
#pragma comment(lib, "opencv_highgui320" CV_EXT)

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int main(int argc, char *argv[])
{
    // 初期化時に塗りつぶす
    cv::Mat red_img(cv::Size(640, 480), CV_8UC3, cv::Scalar(0, 0, 255));
    cv::Mat white_img(cv::Size(640, 480), CV_8UC3, cv::Scalar::all(255));
    cv::Mat black_img = cv::Mat::zeros(cv::Size(640, 480), CV_8UC3);

    // 初期化後に塗りつぶす
    cv::Mat green_img = red_img.clone();
    green_img = cv::Scalar(0, 255, 0);

    cv::namedWindow("red image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
    cv::namedWindow("white image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
    cv::namedWindow("black image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
    cv::namedWindow("green image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
    cv::imshow("red image", red_img);
    cv::imshow("white image", white_img);
    cv::imshow("black image", black_img);
    cv::imshow("green image", green_img);
    cv::waitKey(0);
}


(Qiitaの記事にあったソースのコピペ)

補足情報(言語/FW/ツール等のバージョンなど)

マシンはwindows10, 64ビットオペレーティングシステム
環境はvisual studio community 2017 version 15.2

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

こんにちは。

OpenCVのバージョンは3.20をお使いですね?
3.0以降はopencv_core*.libはなくなりopencv_world*.libに統合されています。

#pragma comment(lib, "opencv_core320" CV_EXT)
#pragma comment(lib, "opencv_highgui320" CV_EXT)


ではなく

#pragma comment(lib, "opencv_world320" CV_EXT)


にしてみて下さい。


【余談ですが】
先日、CMakeの基礎を解説してみました。その中でOpenCVを使うプロジェクトの作り方を例題に取り上げてます。もし、良かったら参考にされて下さい。

CMakeの基礎とTheolizerの組み込み方

(タイトルにあるTheolizerは気にしないでください。ちょっとしたC++用開発ツールです。)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/12 23:54

    Chironian様

    迅速なご回答ありがとうございます。
    OpenCVのversionは3.2.0ですが、libフォルダにはopencv_world320.libはなく、opencv_core320.lib, opencv_highgui320.libはありました。

    キャンセル

  • 2017/07/13 00:10

    Chironian様

    すいません。コメントを書いていて気づいたのですが追加のライブラリディレクトリの設定をちゃんとできていませんでした。
    ビルドできました。本当に有難うございます。

    ご提示していただいたリンクとC++の講座は早速これからの学習の参考にさせていただきます。

    キャンセル

  • 2017/07/13 00:11

    私はOpenCV公式からWindows用のプリビルド版をダウンロードしています。
    https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.2.0/opencv-3.2.0-vc14.exe/download
    解凍すると、build\x64\vc14\libにopencv_world320.libとopencv_world320d.lib、他にcmakeファイルが数個あるだけです。

    もしかしてプリビルド版ではなく手元でビルドするとopencv_world320.libはできずopencv_core320.libが生成される可能性はあるかも知れません。
    ↓をみると、たしかにそのように記載されています。
    http://www.buildinsider.net/small/opencv/004#visualstudio

    OpenCVをビルドする時、デバッグ用のライブラリもビルドすれば、opencv_core320d.libとopencv_highgui320d.libも生成されると思います。

    キャンセル

+1

リンクの件については Chironian さんの回答があるので下の件について

が見つかったので参考にしようと思ったのですが回答はReleaseでやれというもので、Debugでビルドできなければ意味がないのではないかと思うのですが違うのでしょうか?

もしかして、アプリケーションを Debug ビルドするときはライブラリも Debug でなければならないと思っていますか?
OpenCV そのものの内部のデバッグがしたいのでなければ、わざわざ Debug 版をビルドする必要はありません。
Debug 版を使えば OpenCV の内部にステップインできますが、実装の詳細を知らなければかえって混乱するだけです。
OpenCV の関数の内部でエラーが起こったとしても、大抵は関数の使い方が悪いのが原因で、ソースを見ても原因を推測することは難しいです。逆に OpenCV のマニュアルを見ればあっさり解決することも多いです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/13 00:02

    yuki23様

    ご回答ありがとうございます。
    はい、そのように勘違いをしていました。
    C++もVisual Studioのような開発環境を使うのも全く経験がなく、そもそもDebugビルドが何かすら理解していませんでした。
    ググった後ご回答を読んで「Debugでビルドできなければ~」の疑問は解決したと思います。ありがとうございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る