我正在尝试自动生成一些C代码,将其编译到一个共享库中并用cype加载它,我很好奇是否有人能启发我在这样一个库中使用Python API的某些部分可能需要什么(而不需要创建一个完整的模块)
例如,我有一些快速的代码被破解在一起:
PyObject* test() {
PyObject* to_ret = NULL;
PyGILState_STATE gstate = PyGILState_Ensure();
to_ret = Py_BuildValue("i", 1+2);
PyGILState_Release(gstate);
return to_ret;
}
我编译成a.so并用ctypes加载。在
但是,当我运行上述程序时,我得到:
^{pr2}$所以我显然做错了什么。欢迎有任何想法/建议。在
解决方案: 啊哈,上面的可以工作,但ctypes在默认情况下需要一个int返回类型,因此将PyObject*强制转换为整数。似乎没有办法使用ctypes返回任意的python对象,因此生成一个完整的模块似乎是一种方法。在
这似乎可以在python2.7中实现,它支持
ctypes.py_object
作为一种类型。我根据您的示例代码构建了一个库,并使用了以下代码:相关问题 更多 >
编程相关推荐