実現したいこと
PythonではなくC++で点やグラフの描画がしたいと思い,そのような機能を探してみると,matplotlib-cppという有志によるライブラリが見つかりました。Pythonにあるmatplotlibを基にしており,それを使いたいと思い,当GitHub(https://github.com/lava/matplotlib-cpp)内のInstallationを参考にし,手元の Visual Studio Code で設定を試みましたが,エラーが出ました。
現状とそれまでの流れを説明させていただきます。
① matplotlibcpp.h
を /usr/include
内に保存し,c_cpp_properties.json
内のインクルードパスに "/usr/include/**"
を追加することで,#include "matplotlibcpp"
のエラーを解消しました。
②matplotlibcpp.h
でエラーが発生:#include <Python.h>
及び #include <numpy/arrayobject.h>
で include path を更新してください
。そこで,Cドライブ内にある Python39 フォルダ内の拡張子が.h
であるファイル全てと,numpyフォルダ内の拡張子が .h
であるファイル全てを /usr/include
内にコピペしました。
③ ②で発生したエラーは解消されましたが,clustering.cpp
をコンパイルすると,(WSL環境でVisual Studio Codeを動かしており,コンパイルコマンドは g++ clustering.cpp
です。)エラーメッセージが表示され,そこからが解決できていません。
直接的に上と関係あるかどうかは不明ですが,もう一つ気になる点としては,Pythonで,matplotlibを用いて描画を試みたところ,Python 3.9.5の実行環境(上記のPython39のフォルダ内のexeファイルで実行)では正常に動作したものの,Python 3.8.10 及び Python 3.9.7 の実行環境では,import numpy as np
の時点で以下のようなエラーが発生しました。これは関係ありますでしょうか?
Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'numpy'
発生している問題・エラーメッセージ
③で発生したエラーメッセージ
ttps://writening.net/page?fpcrQ2
長く,投稿字数制限に引っ掛かってしまったため,上のリンクで全文が見られるようにしました。申し訳ございません。(hを先頭につけてください。)
該当のソースコード
clustering.cpp
C++
1#include "matplotlibcpp.h" 2#include <iostream> 3using namespace std; 4 5namespace plt = matplotlibcpp; 6 7int main() { 8 plt::plot({1,3,2,4}); 9 plt::show(); 10}
また,非常に長いためここでは割愛していますが,GitHubで公開されている matplotlibcpp.h
を該当のソースコードではインクルードしています。
参考にさせてもらったもの
https://trap.jp/post/1080/
https://gammasoft.jp/blog/install-numpy-pandas-matplotlib-by-pip/
https://teratail.com/questions/312442
補足情報(FW/ツールのバージョンなど)
c_cpp_properties.json
C++
1{ 2 "configurations": [ 3 { 4 "name": "WSL", 5 "includePath": [ 6 "${workspaceFolder}/**", 7 "/usr/include/**" 8 ], 9 "defines": [ 10 "_DEBUG", 11 "UNICODE", 12 "_UNICODE" 13 ], 14 "compilerPath": "/usr/bin/gcc", 15 "cStandard": "c11", 16 "cppStandard": "c++17", 17 "intelliSenseMode": "gcc-x64" 18 } 19 ], 20 "version": 4 21}
Python のバージョン:2.7.17 (Ubuntu上で python --version
のコマンドを用いて確認しました)
他に記述した方が良い情報がありましたら,教えてくださると助かります。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー