He intentado que se ejecute un proyecto mío, pero me he encontrado con problemas. Después de mucha depuración, reduje el problema, pero no tengo idea de cómo proceder.Símbolo indefinido en C++ al cargar una biblioteca compartida de Python
Algunos antecedentes, estoy usando una secuencia de comandos python dentro del código C++. Esto está algo documentado en Python, y logré que funcionara muy bien en mi ejecutable básico. #include y a -lpython2.6 y todo fue grandioso.
Sin embargo, ha surgido una dificultad al ejecutar este script de python desde una biblioteca compartida (.so). Esta biblioteca compartida se "carga" como un "módulo" mediante un sistema de simulación (OpenRAVE). El sistema interactúa con este módulo utilizando un método virtual para "módulos" llamado SendCommand. El módulo inicia un boost :: thread, dando a python su propio hilo y regresa al sistema de simulación. Sin embargo, cuando se inicia la importación de pitón sus módulos y por lo tanto la carga de sus bibliotecas dinámicas se produce un error, supongo que debido al siguiente error:
ImportError: /usr/lib/python2.6/dist-packages/numpy/core/multiarray.so: undefined symbol: _Py_ZeroStruct
He corrido LDD en mi ejecutable y la biblioteca compartida, no lo hace a algunos a ser una diferencia También corrí nm -D en el archivo anterior, el _Py_ZeroStruct no está definido. Si desean imprimir los comandos, me gustaría proporcionarlos. Cualquier consejo sería muy apreciado, gracias.
Aquí está el error pitón completo:
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