【问题标题】:Integrating Python and C++ MacOS PyModuleDef_HEAD_INIT Undeclared集成 Python 和 C++ MacOS PyModuleDef_HEAD_INIT 未声明
【发布时间】:2019-02-22 12:47:03
【问题描述】:

我在 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】:

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

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

    【讨论】:

    • 我正在编辑 PyModuleDef_HEAD_INIT。错误是因为打字而不是复制。 “_”
    • 它保持不变。抱歉打错了。
    • 在使用 Python 3.x 格式进行模块定义时,也可能包含 Python 2.x 标头。
    • 让我看看。
    • 感谢问题已解决。我更改了 XCODE 以使用 Python3 :) 再次感谢
    猜你喜欢
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2016-04-01
    • 2019-12-03
    • 1970-01-01
    相关资源
    最近更新 更多