Почему PyImport_ImportModule segfault в python 3.7.2? - PullRequest
1 голос
/ 08 февраля 2020

Приводит ли python импорт в API c к кому-либо еще segfaults?

#0  0x00007ffff7d7efc4 in PyUnicode_InternInPlace () from /usr/lib64/libpython3.7m.so.1.0
#1  0x00007ffff7d7f00e in PyUnicode_InternFromString () from /usr/lib64/libpython3.7m.so.1.0
#2  0x00007ffff7d2fb88 in PyImport_Import () from /usr/lib64/libpython3.7m.so.1.0
#3  0x00007ffff7d347bb in PyImport_ImportModule () from /usr/lib64/libpython3.7m.so.1.0
#4  0x00000000004005f0 in main () at test2.cpp:5
#include <Python.h>

int main()
{
        PyImport_ImportModule("os");
}

Я что-то здесь явно не так делаю, или это ошибка?

Я использую эти флаги компиляции (только вывод python3 -config --cflags и --libs):

-I/usr/include/python3.7m -I/usr/include/python3.7m  -Wno-unused-result -Wsign-compare -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -DNDEBUG -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -DOPENSSL_LOAD_CONF -fwrapv -lpython3.7m -lpthread -ldl  -lutil -lm

1 Ответ

3 голосов
/ 08 февраля 2020

Как я понимаю, для встраивания Python в C / C ++ необходимо использовать функции Py_Initialize() и Py_Finalize().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...