我使用的是嵌入式的Python C作为每Documentation有问题 - 每当我尝试使用导入的模块,我得到一个:Python嵌入成C - 导入模块
在PythonIncl.exe在0x1e089e85未处理的异常: 0xC0000005: 访问冲突读取位置0x00000004。
该错误发生在PyObject_GetAttrString()
方法和文档没有太大的帮助。我也尝试使用来自IBM的Example中的教程,但始终得到相同的访问冲突。
以下是来自其中一个教程的示例代码,我似乎无法工作,这里出了什么问题?
C代码(在一个主文件):
#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机器MSVS2008,Python 2.7
有点上下文:我想在一个相当大的C程序中嵌入一个使用OpenOPC的小python脚本,并且希望在这两者之间传输数据。但是,我已经通过基本例子在概念验证测试中失败了。
你知道你必须缩进一个python的while的身体吗? – Griwes
为Python编写扩展而不是嵌入Python几乎总是更好,更强大。这样做看起来很相似,但有更好的扩展工具,并且在需要时更容易访问其他Python工具。查看http://twistedmatrix.com/users/glyph/rant/extendit.html了解扩展与嵌入的透视。 –
是的,关于缺少的缩进,在发布过程中丢失了,它在IDE中。 – Shorkaa