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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

OpenCV

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

C++

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

解決済

opencvアプリをビルドしようとするとエラーが出ます。

yutty
yutty

総合スコア12

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

OpenCV

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

C++

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

1回答

1リアクション

0クリップ

471閲覧

投稿2022/07/12 07:42

編集2022/07/12 08:30

環境:visual studio code、wsl2のubuntu、c++

opencvとc++の初学者です。
・解決したいこと
opencv4を用いたtest01.cppをtasks.jsonでビルドして、launch.jsonでデバックし、fruits.jpgのパスをコマンド引数として与えて画像を出力したいです。

・発生しているエラー
以下のようなエラーが発生しています。

/usr/bin/g++ -fdiagnostics-color=always -I /usr/local/include/opencv4 -g /home/<username>/pg_codes/opencv_app/q/test01.cpp -o /home/<username>/pg_codes/opencv_app/q/test01 /usr/bin/ld: /tmp/ccOfMN9w.o: in function `main': /home/<username>/pg_codes/opencv_app/q/test01.cpp:3: undefined reference to `cv::Mat::Mat()' /usr/bin/ld: /home/<username>/pg_codes/opencv_app/q/test01.cpp:5: undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' /usr/bin/ld: /home/<username>/pg_codes/opencv_app/q/test01.cpp:5: undefined reference to `cv::Mat::operator=(cv::Mat&&)' /usr/bin/ld: /home/<username>/pg_codes/opencv_app/q/test01.cpp:5: undefined reference to `cv::Mat::~Mat()' /usr/bin/ld: /home/<username>/pg_codes/opencv_app/q/test01.cpp:7: undefined reference to `cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)' /usr/bin/ld: /home/<username>/pg_codes/opencv_app/q/test01.cpp:8: undefined reference to `cv::waitKey(int)' /usr/bin/ld: /home/<username>/pg_codes/opencv_app/q/test01.cpp:3: undefined reference to `cv::Mat::~Mat()' /usr/bin/ld: /home/<username>/pg_codes/opencv_app/q/test01.cpp:5: undefined reference to `cv::Mat::~Mat()' /usr/bin/ld: /home/<username>/pg_codes/opencv_app/q/test01.cpp:3: undefined reference to `cv::Mat::~Mat()' collect2: error: ld returned 1 exit status

・試したこと
最初は#opencv2/opencv.hppが読み込めなかったので以下のことをしました。
・c_cpp_properties.jsonの"includePath"に"/usr/local/include/opencv4tasks.json"を追加。
・tasks.jsonの"task"の"args"に"-I","/usr/local/include/opencv4"を追加。
opencv.hppは読み込めていると思われのですが、なぜundefined reference to `cv::Mat::~Mat()のようなエラーが出てくるのかがよく分かりません。

解決策など教えて頂けたら幸いです。

・以下、ソースコード

//階層構造 q |--.vscode | |--c_cpp_properies.json | |--launch.json | |--tasks.json | |--test01.cpp |--fruits.jpg

c++

//test01.cpp #include <opencv2/opencv.hpp> int main(int argc, char** argv) { cv::Mat img; img = cv::imread(argv[1],-1); cv::imshow("title", img); cv::waitKey(0); return 0; }
//c_cpp_properies.json { "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/usr/local/include/opencv4" ], "defines": [], "compilerPath": "/usr/bin/gcc", "cStandard": "gnu17", "cppStandard": "gnu++14", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 }
//launch.json { "version": "0.2.0", "configurations": [ { "name":"Launch Program", "type":"cppdbg", "program":"${fileDirname}/${fileBasenameNoExtension}", "miDebuggerPath": "/usr/bin/gdb", "request":"launch", "MIMode": "gdb", "args": ["${workspaceFolder}/fruits.jpg"], "cwd": "${fileDirname}" } ] }
//tasks.json { "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: g++ アクティブなファイルのビルド", "command": "/usr/bin/g++", "args": [ "-fdiagnostics-color=always", "-I", "/usr/local/include/opencv4", "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": "build", "detail": "コンパイラ: /usr/bin/g++" } ] }
melian👍を押しています

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

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

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

適切な質問に修正を依頼しましょう。

2022/07/12 07:49依頼された後にこの質問は修正されています

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

melian

2022/07/12 08:32

OpenCV4 のライブラリをリンクする必要があります。pkg-config コマンドがインストールされていれば、それを利用するとよいかと思います。
yutty

2022/07/12 10:44

ありがとうございます。無事に解決しました!

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

OpenCV

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

C++

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