python — ошибка сегментации Py_DECREF

У меня проблемы с встраиванием 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. Я попытался расширить макросы и проследил segfault до следующего утверждения:

((*(((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.

Что может быть причиной этой ошибки? Может ли быть некоторое несоответствие в моей среде сборки?

0

Решение

Так что, видимо, что-то не так с моим окружением. Я попытался скомпилировать тот же код на другом ПК, и больше не было ошибок.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector