- 私は、インポートモジュールを使用してみてくださいたびに私が手:Pythonの埋め込み - インポートモジュール
PythonIncl.exeで0x1e089e85で未処理の例外: 0xC0000005: アクセス違反の読み取り場所は0x00000004です。
PyObject_GetAttrString()
メソッドでエラーが発生しましたが、ドキュメントはあまり役に立ちません。また、IBMのExampleのようにチュートリアルを使用しようとしましたが、常に同じアクセス違反が発生します。
以下は私がうまくいかないチュートリアルのコード例ですが、ここで間違っていますか?
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
私が使用してXPマシンを実行しています文脈のビット:OpenOPCを使用する小さなPythonスクリプトを非常に大きなCプログラムに埋め込み、2つの間でデータを転送したいと考えています。しかし、私はすでに基本例で概念実証テストに失敗しています。
あなたはPythonのwhileの本文をインデントする必要がありますか? – Griwes
Pythonを埋め込むのではなく、Pythonの拡張を書くことは、ほとんどの場合、より良く、より強力です。そうすることはかなり似ていますが、拡張のためのより良いツールがあり、必要に応じて他のPythonツールに簡単にアクセスできます。拡張と埋め込みの観点については、http://twistedmatrix.com/users/glyph/rant/extendit.htmlを参照してください。 –
はい、転記中に失われた行方不明のインデントについては、IDEにあります。 – Shorkaa