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

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

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

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

986閲覧

opencvのpragmaコメントの使い方について

nigg_1513

総合スコア16

OpenCV

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/04/26 10:52

編集2019/04/26 11:45

実現したいこと

VisualStudio2015でのopencvを利用し、以下のことを実装したいのですが、うまく出来ません。

  • プリコンパイル済みヘッダー
  • クラス分け

メイン文には何も入れていませんが、クラス内でMat型を仕様しています。

余談かもしれませんが
念の為、以前作成したクラスとプリコンパイル済みヘッダーを利用しないプログラムでも動作しましたが、そちらでは、問題なく使用出来ています。

解決方法やアドバイス等ありましたら、よろしくおねがいします。

発生してる問題

以下のようなエラーが出てしまいます

重大度レベル コード 説明 エラー    LNK2001 外部シンボル ""class cv::MatExpr __cdecl cv::operator==(class cv::Mat const &,class cv::Mat const &)" (??8cv@@YA?AVMatExpr@0@ABVMat@0@0@Z)" は未解決です。

ライブラリが参照出来ていないことが原因ではないかと考えています。

関連するソースコード

stdafx

1#pragma once 2 3#include "targetver.h" 4 5#include <stdio.h> 6#include <tchar.h> 7 8// TODO: プログラムに必要な追加ヘッダーをここで参照してください 9#include <iostream> 10#include <opencv2/opencv.hpp>

main

1#include "stdafx.h" 2#include "ImgInfo.h" 3 4#pragma comment(lib, "opencv_core310.lib") 5#pragma comment(lib, "opencv_highgui310.lib") 6#pragma comment(lib, "opencv_imgproc310.lib") 7 8int main() 9{ 10 return 0; 11}

ImgInfo

1class ImgInfo 2{ 3public: 4 //Ctor/Dtor 5 ImgInfo(); 6 ~ImgInfo(); 7 8 //Setter/Getter 9 cv::Mat GetImg(); 10 void SetImg(cv::Mat _img); 11 12private: 13 cv::Mat img; 14}; 15 16cv::Mat ImgInfo::GetImg() { 17 return this->img; 18} 19 20void ImgInfo::SetImg(cv::Mat _img) { 21 this->img = _img; 22}

イメージ説明

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

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

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

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

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

yohhoy

2019/04/26 11:39

OpenCVはどのようにインストールしましたか?Nuget経由 or 公式サイトよりダウンロード or CMake自前ビルド?
nigg_1513

2019/04/26 11:45

一年以上前にインストールしたため、曖昧なのですが、たぶんCMakeを利用し、ライブラリのビルドを行ったと思います。 余談かもしれませんが 念の為、以前作成したクラスとプリコンパイル済みヘッダーを利用しないプログラムでも動作しましたが、そちらでは、問題なく使用出来ています。
yominet

2019/04/26 18:30

ライブラリパスを入れるのは 「ライブラリ WinRTディレクトリ」じゃなくて、 「ライブラリディレクトリ」ではないでしょうか?
nigg_1513

2019/04/29 05:53

コメントありがとうございます。 返信遅れてしまい申し訳ありません。 完全に見逃していました。ありがとうございます。 そこを修正しましたが、依存ファイルを追加しない場合、同様のエラーが起きてしまいました。 そのため、追加の依存ファイルを設定するか。 ライブラリを参照できる設定を逃しているのだと考えています。
guest

回答2

0

C++

1void ImgInfo::SetImg(cv::Mat _img) { 2 this->img == _img; // ← なにコレ? = の間違い? 3}

投稿2019/04/26 10:55

episteme

総合スコア16614

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

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

nigg_1513

2019/04/26 10:58

ご指摘ありがとう御座います。 転記の際に間違えてしまいました。修正させていただきます。
episteme

2019/04/26 10:59

で、解決した?
nigg_1513

2019/04/26 11:01

依然として、同じエラーが出てしまいます
episteme

2019/04/26 11:04

んー... operator== なんか使ってないハズなんだがなー... みっつの #pragma のかわりに #pragma comment(lib, "opencv_world310.lib") だとどうなります?
nigg_1513

2019/04/26 11:09

同じエラーが出てしまいます
nigg_1513

2019/04/26 11:33

重大度レベル コード 説明 エラー LNK2001 外部シンボル ""public: void __thiscall cv::Mat::copySize(class cv::Mat const &)" (?copySize@Mat@cv@@QAEXABV12@@Z)" は未解決です。 重大度レベル コード 説明 エラー LNK2001 外部シンボル ""public: void __thiscall cv::Mat::deallocate(void)" (?deallocate@Mat@cv@@QAEXXZ)" は未解決です。 重大度レベル コード 説明 エラー LNK2001 外部シンボル ""void __cdecl cv::fastFree(void *)" (?fastFree@cv@@YAXPAX@Z)" は未解決です。 もう一度立ち上げ直したところ、このようなエラーになりました。
nigg_1513

2019/04/26 11:36

重大度レベル コード 説明 エラー LNK1120 3 件の未解決の外部参照 このようなエラーも出ていました。 分けて返信してしまって申し訳ございません。
guest

0

自己解決

イメージ説明
追加の依存ファイルに追加することで、解決致しました。
コメントありがとうございました。

投稿2019/04/26 12:17

nigg_1513

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問