ホームページ > バックエンド開発 > Python チュートリアル > 開発のために Python を C/C++ に埋め込む方法

開発のために Python を C/C++ に埋め込む方法

高洛峰
リリース: 2016-10-17 16:28:13
オリジナル
1350 人が閲覧しました

Python を C/C++ に埋め込みたい場合、必要なのは VC に Python のインクルード ファイル ディレクトリと lib ファイル ディレクトリを追加することです。 Python を C/C++ に組み込む方法を見てみましょう。

VC6.0 では、[ツール]->[オプション]->[ディレクトリ]->[ディレクトリの表示] を開き、Python インストール ディレクトリのインクルード ディレクトリをインクルード ファイル項目に追加し、libs ディレクトリをライブラリ ファイル項目に追加します。

VC2005 で、[ツール]->[オプション]->[プロジェクトとソリューション]->[VC++] ディレクトリを開き、同じ作業を行います。

コードは次のとおりです:

デバッグで実行中に「python31_d.lib ファイルが見つかりません」というエラーが発生しました。理由は後で判明しました。python31_d.lib ファイルはデバッグで生成する必要があり、そうでない場合は生成できません。 release でのみ生成されます

#include <python.h> 
int main()  
{  
Py_Initialize();  
PyRun_SimpleString("Print &#39;hi, python!&#39;");  
Py_Finalize();  
return 0;  
}
ログイン後にコピー

Py_Initialize 関数のプロトタイプは次のとおりです: void Py_Initialize()

この関数は、Python を C/C++ に埋め込むときに使用する必要があり、他の Python を使用する前に呼び出す必要があります。 /C API。 Py_IsInitialized 関数を使用すると、初期化が成功したかどうかを判断し、成功した場合は True を返すことができます。

PyRun_SimpleString 関数のプロトタイプは int PyRun_SimpleString(const char *command) で、Python コードの一部を実行するために使用されます。

注: ステートメント間のインデントを維持する必要がありますか?

Py_Finalize 関数のプロトタイプは void Py_Finalize() で、これは Python インタープリターを閉じ、インタープリターによって占有されているリソースを解放するために使用されます。

PyRun_SimpleFile 関数は、「.py」スクリプト ファイルを実行するために使用できます。関数のプロトタイプは次のとおりです:

int PyRun_SimpleFile(FILE *fp, const char *filename);

ここで、fp は開いているファイル ポインターとファイル名です。実行する Python ファイル名です。ただし、この関数の正式リリースは Visual Studio 2003.NET でコンパイルされているため、他のバージョンのコンパイラを使用すると、バージョンの理由で FILE 定義がクラッシュする可能性があります。同時に、簡単にするために、次のメソッドを使用してこの関数を置き換えることができます:

PyRun_SimpleString("execfile('file.py')"); //execfile を使用して Python ファイルを実行します

Py_BuildValue() が使用されます数値と文字列の場合、Python で対応するデータ型に変換処理が行われます (C 言語では、Python の型はすべて PyObject 型として宣言されます)。関数のプロトタイプは次のとおりです:

PyObject *Py_BuildValue(const char *format, …)。 .);

PyString_String() は、PyObject* 型の変数を C 言語で処理できる char* 型に変換するために使用されます。 具体的なプロトタイプは次のとおりです。

char* PyString_String(PyObject *p);

上記Python を C/C++ に埋め込む方法の紹介です


の関連コンテンツの紹介
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート