如何在Python扩展中公开C++类?(不诉诸法律)增强.python或大口大口或赛顿)

2024-10-03 00:25:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我遵循了这个视频教程,使用VisualStudio为Python建立了一个非常基本的C++扩展。这是非常直接和工作相当不错。 https://www.youtube.com/watch?v=y_eh00oE5rI

我的代码是这样的。你知道吗

#ifdef _DEBUG
#define _DEBUG_WAS_DEFINED
#undef _DEBUG
#endif

#include <Python.h>

#define MODULE_NAME "DummyExt"

PyObject* greet(PyObject* self, PyObject* args)
{
    return PyString_FromString("Hello world!");
}

PyMethodDef DummyExtMethods[] = 
{
    {"greet", greet, METH_NOARGS, nullptr}
};

PyMODINIT_FUNC
initDummyExt(void)
{
    PyObject* m;
    m = Py_InitModule(MODULE_NAME, DummyExtMethods);
    if (m == nullptr)
    {
        return;
    }
}


#ifdef _DEBUG_WAS_DEFINED
#define _DEBUG 1
#endif

如何使用Python的API从扩展中公开C++类?我希望能够在C++中定义类及其逻辑,并能够从Python实例化它并调用它的成员函数以及其他什么。正如标题所说,我不想使用任何第三方工具,只想使用python附带的header和libs。你知道吗

任何帮助都将不胜感激:)


Tags: namedebugreturnmodulepyobjectendifwasdefined