我在XCode上开发时遇到了这个问题。无法在网上找到任何东西。我甚至不知道这个问题是否与XCode有关,或者它是一个普遍的问题。
所以这是我的示例代码:
#include "myModule.h"
#include <Python/Python.h>
int Cfib(int n){
if (n<2){
return n;
}
else{
return Cfib(n-1)+Cfib(n-2);
}
}
static PyObject* fib(PyObject* self, PyObject* args){
int n;
if (!PyArg_ParseTuple(args, "i", &n)){
return NULL;
}
return Py_BuildValue("i", Cfib(n));
}
static PyObject* version(PyObject* self){
return Py_BuildValue("s", "Version 1.0");
}
static PyMethodDef myMethods[] = {
{"fib", fib, METH_VARARGS, "Calculate the fibonacci numbers."},
{"version", (PyCFunction)version, METH_NOARGS, "Tells us the version of our module."},
{NULL, NULL, 0, NULL}
};
static struct PyModuleDef myModule = {
PyModuleDef_HEAD_INIT, // Use of undeclared indentifier PyModuleDef_HEAD_INIT
"myModule",
"Fibnoacci Module",
-1,
myMethods
};
有谁知道如何做** PyModuleDef_HEAD_INIT **?什么是我可以声明要克服的默认方法头定义值?
或者我应该转向Linux环境以进一步开发?
谢谢。
您在PyModule_HEAD_INIT
定义中使用了myModule
,但这不是CPython声明的标识符。你可能正在考虑PyModuleDef_HEAD_INIT
(注意Def
)。
至于你是否应该在Linux下开发:到目前为止,你遇到的问题并不是你的工具的错。转换似乎不太可能在这方面有所帮助。