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

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

新規登録して質問してみよう
ただいま回答率
85.50%
CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Q&A

解決済

2回答

3359閲覧

opencvインストール LNK1104エラー

oknd1

総合スコア17

CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

0グッド

0クリップ

投稿2017/07/12 12:15

###前提・実現したいこと
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のエラーが解決できれば前者も解決できると思っています。どのようにすればよいのかご教示いただければ幸いです。
###該当のソースコード

C++

1#pragma warning(disable:4819) 2#ifdef _DEBUG 3#define CV_EXT "d.lib" 4#else 5#define CV_EXT ".lib" 6#endif 7#pragma comment(lib, "opencv_core320" CV_EXT) 8#pragma comment(lib, "opencv_highgui320" CV_EXT) 9 10#include <opencv2/core/core.hpp> 11#include <opencv2/highgui/highgui.hpp> 12int main(int argc, char *argv[]) 13{ 14 // 初期化時に塗りつぶす 15 cv::Mat red_img(cv::Size(640, 480), CV_8UC3, cv::Scalar(0, 0, 255)); 16 cv::Mat white_img(cv::Size(640, 480), CV_8UC3, cv::Scalar::all(255)); 17 cv::Mat black_img = cv::Mat::zeros(cv::Size(640, 480), CV_8UC3); 18 19 // 初期化後に塗りつぶす 20 cv::Mat green_img = red_img.clone(); 21 green_img = cv::Scalar(0, 255, 0); 22 23 cv::namedWindow("red image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO); 24 cv::namedWindow("white image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO); 25 cv::namedWindow("black image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO); 26 cv::namedWindow("green image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO); 27 cv::imshow("red image", red_img); 28 cv::imshow("white image", white_img); 29 cv::imshow("black image", black_img); 30 cv::imshow("green image", green_img); 31 cv::waitKey(0); 32}

(Qiitaの記事にあったソースのコピペ)
###補足情報(言語/FW/ツール等のバージョンなど)
マシンはwindows10, 64ビットオペレーティングシステム
環境はvisual studio community 2017 version 15.2

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

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

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

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

投稿2017/07/12 13:31

編集2017/07/12 13:32
yuki23

総合スコア1448

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oknd1

2017/07/12 15:02

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

0

ベストアンサー

こんにちは。

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

cpp

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

ではなく

cpp

1#pragma comment(lib, "opencv_world320" CV_EXT)

にしてみて下さい。


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

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

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

投稿2017/07/12 12:40

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oknd1

2017/07/12 14:54

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

2017/07/12 15:10

Chironian様 すいません。コメントを書いていて気づいたのですが追加のライブラリディレクトリの設定をちゃんとできていませんでした。 ビルドできました。本当に有難うございます。 ご提示していただいたリンクとC++の講座は早速これからの学習の参考にさせていただきます。
Chironian

2017/07/12 15: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も生成されると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問