gpt4 book ai didi

python - Py_DECREF 段错误

转载 作者:太空宇宙 更新时间:2023-11-04 13:19:01 25 4
gpt4 key购买 nike

我在将 Python 嵌入 C++ 时遇到问题。我正在使用 Mingw w64 gcc 和 64 位 Python 2.7.11。

#include <Python.h>

int main(int argc, char *argv[]) {
Py_Initialize();

PyObject* pName = PyString_FromString("test");

Py_DECREF(pName);

Py_Finalize();
return 0;
}

调用编译器:

g++ "-IC:\\Python27\\include" -O0 -g3 -Wall -c -fmessage-length=0 -std=c++11 -o "src\\main.o" "..\\src\\main.cpp" 
g++ "-LC:\\Python27\\libs" -std=c++11 -o pytest.exe "src\\main.o" -lpython27

问题是它在 Py_DECREF 中出现段错误。我尝试扩展宏,并将段错误跟踪到以下语句:

((*(((PyObject*) ((PyObject *) (pName)))->ob_type)->tp_dealloc)((PyObject *) ((PyObject *) (pName))));

事实证明,tp_dealloc 指向 0x1。

同样的问题出现在Python文档中提供的示例代码中: https://docs.python.org/2/extending/embedding.html#pure-embedding

如果我删除对 Py_DECREF(pName) 和 Py_DECREF(pArgs) 的一些调用,文档中的代码将按预期工作。然而,我在网上找到的每个示例(包括来自 Python 文档的示例)都调用了 Py_DECREF。

这个错误的原因可能是什么?我的构建环境是否存在一些不一致?

最佳答案

显然,我的环境出了点问题。我尝试在另一台 PC 上编译相同的代码,并且不再出现段错误。

关于python - Py_DECREF 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36079352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com