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

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

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

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

OpenCV

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

C++

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

Q&A

解決済

1回答

2360閲覧

open cv visual studio codeでcode runnerを使った際のファイルをincludeする際のエラー

Naruaki

総合スコア2

include

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

OpenCV

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

C++

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

0グッド

0クリップ

投稿2021/11/27 01:53

編集2021/11/27 02:10

前提・実現したいこと

先日visual studio codeでopencvを利用した簡単なプロジェクトを作り、エラーが発生。この質問サイトで質問したことでターミナルで実行できるようになったが、今日、visual studio codeのCode Runnerを使用してコンパイル実行ができないことがわかりました。どなたか詳し方で改善方法教えていただけると助かります。

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

mainのコード

main

1#include <iostream> 2#include <stdio.h> 3#include <opencv2/opencv.hpp> 4 5int main() { 6 cv::Mat img = cv::imread("sample.jpg"); 7 if(img.empty()) { 8 printf("aa"); 9 return -1; 10 } 11 cv::namedWindow("test", cv::WINDOW_AUTOSIZE); 12 cv::imshow("test", img); 13 cv::waitKey(0); 14 cv::destroyWindow("test"); 15 return 0; 16} 17

codeRunner

1{ 2 3 "code-runner.runInTerminal": true, 4 "code-runner.saveFileBeforeRun": true, 5 "C_Cpp.default.cppStandard": "c++17", 6 7 "clang.executable": "clang++", 8 "clang.cxxflags": [ 9 "-std=c++14" 10 ], 11 "clang.cflags": [ 12 "c11" 13 ], 14 "cmake.configureOnOpen": true, 15 16}

main
イメージ説明
Code Runner setting
イメージ説明
Code Runner でコンパイルした際のterminal
イメージ説明

試したこと

ターミナルでは実行ができたため、Code Runnerが原因じゃないかなと思っています。もし、それ以外の箇所で原因がある場合についても教えていただきたいです。

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

ちなみにC++を使用しています。macでvisual studio codeを動かしています。

足りない情報がありましたらコメントしてくだされば随時更新します。

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

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

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

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

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

episteme

2021/11/27 02:01

画像で貼られると困る...
Naruaki

2021/11/27 02:01

あ、ソースコードですか?
episteme

2021/11/27 02:02

> g++ main.cpp -o main インクルード・パス や ライブラリの指定が無いからコンパイル・エラーなのはアタリマエちゃいます?
episteme

2021/11/27 02:04

> あ、ソースコードですか? テキストで示せるものは基本全部。画像だとコピペとかできんやん。
Naruaki

2021/11/27 02:04

初心者なもので、どこに追加したらいいか教えてくださると助かります。
episteme

2021/11/27 02:05

> 初心者なもので、どこに追加したらいいか教えてくださると助かります。 なにを?
Naruaki

2021/11/27 02:11 編集

> 初心者なもので、どこに追加したらいいか教えてくださると助かります。 Code Runnerでのインクルード・パス やライブラリの指定に関してです。
jbpb0

2021/11/27 02:18 編集

https://teratail.com/questions/371071 では、 g++ -std=c++11 main.cpp -o main `pkg-config --cflags opencv4` `pkg-config --libs opencv4` とやりましたよね 上記には「g++...」に「`pkg-config --cflags opencv4`」と「`pkg-config --libs opencv4`」が付いてるので、うまくいくのです ターミナルで、下記をそれぞれ実行してみてください いろいろ表示されますよね それらが「g++...」に付いた状態でコンパイルされたのです pkg-config --cflags opencv4 pkg-config --libs opencv4 一方、「Code Runner でコンパイルした際のterminal」には、それらは付いてませんよね なので、インクルードファイルとか、ライブラリファイルとかがどこにあるのかコンパイラが分からないので、コンパイルできません 「Code Runner」でコンパイルする際に、インクルードファイルの場所や、ライブラリファイルの場所やファイル名をどのように指定するのかを、ググって調べてみてください
Naruaki

2021/11/27 02:16

`pkg-config --cflags opencv4` `pkg-config --libs opencv4`を追加しないといけないことに気がついたのですが、Code Runnerのsettingでどう変えたらいいかわからず困っていた感じです。
jbpb0

2021/11/27 02:19

> `pkg-config --cflags opencv4` `pkg-config --libs opencv4`を追加しないといけない それをそのまま追加するのではなくて、実行した結果を追加するのです 私の一つ前のコメントを見て、そこに書いてある二つのコマンドをターミナルで実行してみてください
Naruaki

2021/11/27 02:20

Code Runnerに "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt  `pkg-config --cflags opencv4` `pkg-config --libs opencv4`&& $dir$fileNameWithoutExt", を追加するだけではダメなのでしょうか?
Naruaki

2021/11/27 02:22

>私の一つ前のコメントを見て、そこに書いてある二つのコマンドをターミナルで実行してみてください 了解です
jbpb0

2021/11/27 02:23

> ...を追加するだけではダメなのでしょうか? 分かりません うまくいくかもって思ったのなら、実際やってみたらいいと思うのですが
Naruaki

2021/11/27 02:28

>私の一つ前のコメントを見て、そこに書いてある二つのコマンドをターミナルで実行してみてください OpenCV % pkg-config --cflags opencv4 -I/usr/local/opt/opencv/include/opencv4 OpenCV % pkg-config --libs opencv4 -L/usr/local/opt/opencv/lib -lopencv_gapi -lopencv_stitching -lopencv_alphamat -lopencv_aruco -lopencv_barcode -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_mcc -lopencv_quality -lopencv_rapid -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_highgui -lopencv_datasets -lopencv_text -lopencv_plot -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_wechat_qrcode -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_dnn -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core こんな感じで表示されました >"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt  `pkg-config --cflags opencv4` `pkg-config --libs opencv4`&& $dir$fileNameWithoutExt", を追加するだけではダメなのでしょうか? やって見ましたがダメでした
jbpb0

2021/11/27 02:55 編集

「-I/usr/local/opt/opencv/include/opencv4」と「-L/usr/local/opt/opencv/lib」は必要です 「-lopencv_gapi...」は、その中から要るものだけ付けたらいいのですが、最小限要るのがどれだったのか忘れました 自分でググってみてください うろ覚えですが、たしか、「-lopencv_core」だけでいけたかな? 他にいくつか要るかな?? みたいな感じだったような
Naruaki

2021/11/27 03:01

"cpp": "cd $dir && g++ -std=c++11 $fileName -o $fileNameWithoutExt `pkg-config --cflags opencv4` `pkg-config --libs opencv4`&& $dir$fileNameWithoutExt"  で解決しました。-std=c++11 が必要だったみたいです
Naruaki

2021/11/27 03:03

最後までお付き合いいただきありがとうございました
jbpb0

2021/11/27 03:28

それでできるなら、その方がいいですね
guest

回答1

0

自己解決

"cpp": "cd $dir && g++ -std=c++11 $fileName -o $fileNameWithoutExt pkg-config --cflags opencv4 pkg-config --libs opencv4&& $dir$fileNameWithoutExt"  で解決しました。-std=c++11 が必要だったみたいです

投稿2021/11/27 03:03

Naruaki

総合スコア2

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

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

episteme

2021/11/27 09:53 編集

-std=c++11 を指定しないとどうなっちゃうですか? "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt `pkg-config --cflags opencv4` `pkg-config --libs opencv4` && $dir$fileNameWithoutExt" を試していただきたく。
Naruaki

2021/11/28 04:48

エラーが起こりますね設定している規定と違うので
episteme

2021/11/28 05:28

いやだからどんなエラー?
Naruaki

2021/11/28 05:30

規定があっていないことに関するエラーです。
episteme

2021/11/28 05:32

(通じないヒトやなー...)
Naruaki

2021/11/28 05:34

あはは、一つ一つあげるのが大変なので、曖昧な回答しました。詳しくは自分もよくわからないので、エラーに関して、詳しく知りたい場合は、自分で調べて見てください。申し訳ないです。
Naruaki

2021/11/28 05:35

自分学んでる最中なんですよ
episteme

2021/11/28 05:38

「詳しくは自分もよくわからない」のに 規定があっていないことに関するエラー だと判断できたんですか?
Naruaki

2021/11/28 05:39

はい、そうですね。
jbpb0

2021/11/29 01:49 編集

epistemeさん https://opencv.org/opencv-4-0/ の「Release highlights:」に「OpenCV is now C++11 library and requires C++11-compliant compiler.」と書かれてますが、 https://teratail.com/questions/370957 の質問に記載のエラーを見ると、質問者さんがコンパイルに使ってるコンパイラはデフォルトがC++11以前の仕様なので、「-std=c++11」を付けないとエラーが出るのだと思います 質問者さんがコンパイラに何を使ってるのか分かりませんが、たとえばXcodeのコンパイラの仕様は、 https://help.apple.com/xcode/mac/current/#/itcaec37c2a6 の「C++ Language Dialect (CLANG_CXX_LANGUAGE_STANDARD)」の「Compiler Default:」を見たら、現状の最新バージョンXcode 13.2でも「-std=gnu++98」のようです 当方のMacで、Xcodeのg++(Apple clang version 11.0.0)とbrewで入れたOpenCVの組み合わせで、質問のコードを g++ main.cpp -o main `pkg-config --cflags opencv4` `pkg-config --libs opencv4` でコンパイルしようとしたら、エラーがたくさん出ました 以下は、その一部です /usr/local/opt/opencv/include/opencv4/opencv2/core/cvdef.h:740:4: error: "OpenCV 4.x+ requires enabled C++11 support" # error "OpenCV 4.x+ requires enabled C++11 support" /usr/local/opt/opencv/include/opencv4/opencv2/core/matx.hpp:143:15: error: no template named 'initializer_list' in namespace 'std' Matx(std::initializer_list<_Tp>); //!< initialize from an initializer list /usr/local/opt/opencv/include/opencv4/opencv2/core/types.hpp:2371:29: error: no member named 'val' in 'cv::Scalar_<float>' return Scalar_<float>(a.val[0] * s, a.val[1] * s, a.val[2] * s, a.va...
episteme

2021/11/29 01:21

検証ありがとです。 ... C++98がデフォルトな処理系とか、まだあるんだ。
Naruaki

2021/11/30 07:01 編集

jbpb0さん、凄い検証力ですね。勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問