Я пытался запустить свой проект, но столкнулся с проблемой. После большой отладки я сузил проблему, но понятия не имею, как действовать.
Немного предыстории, я использую скрипт на Python внутри кода C ++. Это несколько документировано на Python, и мне удалось очень хорошо запустить его в моем основном исполняемом файле. #include и -lpython2.6, и все было замечательно.
Однако возникли трудности при запуске этого сценария Python из общей библиотеки (.so). Эта общая библиотека «загружается» как «модуль» системой моделирования (OpenRAVE). Система взаимодействует с этим модулем, используя виртуальный метод для «модулей», называемый SendCommand. Затем модуль запускает boost :: thread, предоставляя python свой собственный поток, и возвращается в систему моделирования. Однако, когда python начинает импортировать свои модули и, таким образом, загружать свои динамические библиотеки, происходит сбой, я полагаю, из-за следующей ошибки:
ImportError: /usr/lib/python2.6/dist-packages/numpy/core/multiarray.so: undefined symbol: _Py_ZeroStruct
Я запустил ldd на своем исполняемом файле и общей библиотеке, в этом нет разницы. Я также запустил nm -D для файла выше, _Py_ZeroStruct действительно не определено. Если вы, ребята, хотели бы распечатать команды, я был бы рад предоставить их. Буду признателен за любой совет, спасибо.
Вот полная ошибка Python:
Traceback (most recent call last):
File "/usr/lib/python2.6/dist-packages/numpy/__init__.py", line 130, in
import add_newdocs
File "/usr/lib/python2.6/dist-packages/numpy/add_newdocs.py", line 9, in
from lib import add_newdoc
File "/usr/lib/python2.6/dist-packages/numpy/lib/__init__.py", line 4, in
from type_check import *
File "/usr/lib/python2.6/dist-packages/numpy/lib/type_check.py", line 8, in
import numpy.core.numeric as _nx
File "/usr/lib/python2.6/dist-packages/numpy/core/__init__.py", line 5, in
import multiarray
ImportError: /usr/lib/python2.6/dist-packages/numpy/core/multiarray.so: undefined symbol: _Py_ZeroStruct
Traceback (most recent call last):
File "/home/constantin/workspace/OpenRAVE/src/grasp_behavior_2.py", line 3, in
from openravepy import *
File "/home/constantin/workspace/rospackages/openrave/lib/python2.6/site-packages/openravepy/__init__.py", line 35, in
openravepy_currentversion = loadlatest()
File "/home/constantin/workspace/rospackages/openrave/lib/python2.6/site-packages/openravepy/__init__.py", line 16, in loadlatest
return _loadversion('_openravepy_')
File "/home/constantin/workspace/rospackages/openrave/lib/python2.6/site-packages/openravepy/__init__.py", line 19, in _loadversion
mainpackage = __import__("openravepy", globals(), locals(), [targetname])
File "/home/constantin/workspace/rospackages/openrave/lib/python2.6/site-packages/openravepy/_openravepy_/__init__.py", line 29, in
from openravepy_int import *
ImportError: numpy.core.multiarray failed to import