集成Python和C ++ MacOS PyModuleDef_HEAD_INIT未声明

问题描述 投票:0回答:1

我在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环境以进一步开发?

谢谢。

python c++ xcode macos
1个回答
2
投票

您在PyModule_HEAD_INIT定义中使用了myModule,但这不是CPython声明的标识符。你可能正在考虑PyModuleDef_HEAD_INIT(注意Def)。

至于你是否应该在Linux下开发:到目前为止,你遇到的问题并不是你的工具的错。转换似乎不太可能在这方面有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.