2020年3月4日水曜日

QtCreator に python.h を組み込む


win10環境の私が **.pro に加えたのは以下の3行
CONFIG += no_keywords
INCLUDEPATH += c:/Users/hoge/AppData/Local/Programs/Python/Python38/include/
LIBS += c:\Users\hoge\AppData\Local\Programs\Python\Python38\libs\python38.lib

パスの区切り文字はどっちでもいけました
パス自体はそれぞれの環境に合わせて。私はpythonをユーザーにインストしてしまったようで深い場所になってます

cのコードはこのページにあるとおりで簡単です
私としてはプロジェクトの設定が一番難しかったのでここに残しました
多分creatorの使い方としては基本的なことなんでしょうけども
必要なのはヘッダとライブラリです
ライブラリはpragmaでも書けると思うが??

Qt c++ からpythonを使う一番簡単な方法は多分こんな感じだと思う
QStringList argList = { "hogetta/py" , "任意の引数"  }
process.start( "python.exe" ,  argList ) ;
まずpythonでスクリプトを書いて引数を処理させる
Qtからは普通にパイソンを起動してそのスクリプトと何らかのデータを引数として与える

あと、スクリプトが短ければpyファイルは作らずに直接コマンドを与えても良いです
QStringList argList = { "-c" , "import \/ "  }
process.start( "python.exe" ,  argList ) ;
これはファイルをゴミ箱へ捨てる処理です

これらの場合でもc++側では終了確認が出来るのと、processをパイプで繋いでおけばパイソンからメッセージ程度は受け取れます
なので、今回のように直接pythonを組み込むケースは、pythonが取得した何らかのデータを直接c++で使うようなケースに限定されると思う

要するに需要はあんまりなさそうだけど面白いのでやってみたって程度です
アプリを開発していて何らかの処理を付け加えたいときに、今までは内部に追加で実装していたけど、最近スタンドアロンで外部アプリを書いてそこに投げるようにしてる
常時使わない機能を本体に組み込むのは無駄に感じることや、開発・バグフィクスが容易だから
pythonの活用もその一例
難点としては細かいデータのやりとりが出来ないことかな
まあケースバイケースですよね

0 件のコメント:

コメントを投稿