Я написал «плагин Python» на C++ для приложения C++, отличного от Python.
В какой-то момент этот плагин, который является .so, инициализирует интерпретатор Python и открывает консоль Python.
Для удобства « затем импортируется модуль readline», и мы получаем эту ошибку:
ImportError: /usr/lib/python2.7/lib-dynload/readline.so: неопределенный символ: PyOS_InputHook
Команда ссылки (сгенерированная cmake):
/usr/bin/c++ -fPIC -Wall -Wextra -O3 -DNDEBUG -Xlinker -export-dynamic -Wl,-fwhole-program /usr/lib/libpython2.7.a -shared -Wl,-soname,libMyplugin.so -o libMyplugin.so [исходники] [библиотеки qt] -lGLU -lGL -lX11 -lXext -lc -lc -lpython2.7 -Wl,-rpath,/src:/usr/local/Trolltech/Qt-4.8.4/ библиотека:
nm libMyplugin.so
дает следующие символы, связанные с Python:
U Py_Finalize
U Py_Initialize
00000000002114a8 B PyOS_InputHook
U PyRun_InteractiveLoopFlags
U PyRun_SimpleStringFlags
Мы видим, что PyOS_InputHook
определено в разделе BSS плагина. Тем не менее, readline.so
Python не может его найти.
Вопрос почему и как это исправить.