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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Visual Studio

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

C++

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1453閲覧

C++からEmbeddable Pythonを呼び出して処理をさせ、戻り値を受け取る

退会済みユーザー

退会済みユーザー

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Visual Studio

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

C++

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/02/10 17:54

C++からPythonを呼び出して.pyファイルを実行する

C++でPython API(Python.h)を使用して.pyファイルを実行したいです。そして、その実行結果(戻り値)をC++の処理に使うまでが最終目標です。
ディレクトリ構成は、
./pyex/main.cpp
./pyex/python/
となっています。
python/というのは、pythonのembeddable pythonエディションをダウンロードしたものを展開し、「python」というフォルダのなかに入れたものです。例として、./pyex/python/python.exeのようになっています。
Pythonの実行環境が無い人でもソフトを実行できるように、ソフトに同梱しているembeddable Python 3.7.2を使って処理をしてほしいです。予定では、Pythonのhashlibを使います。環境では、Python.hのはPython 3.6.8のものです。

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

Fatal Python error: Py_Initialize: unable to load the file system codec ModuleNotFoundError: No module named 'encodings' Current thread 0x00001644 (most recent call first):

該当のソースコード

C++

1#include <Python.h> 2int main() 3{ 4 Py_SetPythonHome((wchar_t *)"python"); 5 Py_Initialize(); 6 PyRun_SimpleString("print(252)"); 7 Py_Finalize(); 8 9 return 0; 10}

試したこと

  • embeddable pythonの中のpython37.zipを展開して./pyex/pythonに入れる。
  • Py_SetProgramName((wchar_t *)"python/python.exe");
  • python3.6 embを使ってみる。
  • Blenderのソースコードを読んで、ヒントがないか探す。

補足情報

Windows10 Home, Visual Studio 2017, Python 3.6.8, Python 3.7.2 embeddable edition

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

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

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

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

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

guest

回答2

0

system関数でpython&そのコードを実行させましょう

投稿2019/02/11 01:14

y_waiwai

総合スコア87749

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

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

退会済みユーザー

退会済みユーザー

2019/02/11 01:21

Pythonの関数をC++から呼んでその戻り値が欲しいのですが、system("python sample.py");でどうやったら戻り値が取得できますか。
y_waiwai

2019/02/11 01:45

「python プロセス間通信」でぐぐって、お互いの通信をできるようにしとけば受け渡しができるようになるかと
y_waiwai

2019/02/11 01:49

まあ、spawn関数で戻り値を戻す、というのが手っ取り早くていいですが、これでpythonが実行できるかは実際にやってみてください
guest

0

ベストアンサー

やりたかったことができたので、それを記事にしました。
Qiita

投稿2019/10/12 00:14

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問