ドキュメントに従って C 用の埋め込み Python を使用すると問題が発生します- インポートされたモジュールを使用しようとすると、次のようになります。
PythonIncl.exe の 0x1e089e85 で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0x00000004。
エラーはPyObject_GetAttrString()
メソッドで発生し、ドキュメントはあまり役に立ちません。IBM の例のようにチュートリアルも使用してみましたが、常に同じアクセス違反が発生します。
以下は、動作しないように見えるチュートリアルの 1 つからのサンプル コードです。ここで何が問題なのですか?
C コード (1 つのメイン ファイル内):
#include <Python.h>
int main()
{
PyObject *strret, *mymod, *strfunc, *strargs;
char *cstrret;
Py_Initialize();
mymod = PyImport_ImportModule("reverse");
strfunc = PyObject_GetAttrString(mymod, "rstring");
strargs = Py_BuildValue("(s)", "Hello World");
strret = PyEval_CallObject(strfunc, strargs);
PyArg_Parse(strret, "s", &cstrret);
printf("Reversed string: %s\n", cstrret);
Py_Finalize();
return 0;
}
Python コード (reverse.py という名前のファイル内、同じフォルダー内):
def rstring(s):
i = len(s)-1
t = ''
while(i > -1):
t += s[i]
i -= 1
return t
MSVS2008、Python 2.7 を使用して XP マシンを実行しています
ちょっとしたコンテキスト: OpenOPC を使用する小さな python スクリプトをかなり大きな C プログラムに埋め込もうとしていて、2 つの間でデータを転送したいと考えています。ただし、基本的な例を使用した概念実証テストでは、すでに失敗しています。