Ho cercato di far funzionare un mio progetto ma ho avuto dei problemi. Dopo molte operazioni di debug, ho ristretto il problema ma non ho idea di come procedere.Simbolo non definito in C++ durante il caricamento di una libreria condivisa Python
Qualche sfondo, sto usando uno script python all'interno del codice C++. Questo è un po 'documentato su Python, e sono riuscito a farlo funzionare molto bene nel mio eseguibile di base. #include e un -lpython2.6 e tutto era grandioso.
Tuttavia, è stata rilevata una difficoltà durante l'esecuzione di questo script python da una libreria condivisa (.so). Questa libreria condivisa è "caricata" come "modulo" da un sistema di simulazione (OpenRAVE). Il sistema interagisce con questo modulo utilizzando un metodo virtuale per "moduli" chiamato SendCommand. Il modulo avvia quindi un boost :: thread, dando a python il proprio thread e ritorna al sistema di simulazione. Tuttavia, quando inizia l'importazione pitone suoi moduli e quindi di caricare le sue librerie dinamiche non riesce, presumo a causa del seguente errore:
ImportError: /usr/lib/python2.6/dist-packages/numpy/core/multiarray.so: undefined symbol: _Py_ZeroStruct
Ho eseguito ldd sul mio eseguibile e la libreria condivisa, non ci fa un po 'di fare la differenza Ho anche eseguito nm -D nel file sopra, _Py_ZeroStruct è effettivamente indefinito. Se voi ragazzi voleste la stampa dei comandi sarei lieto di fornirli. Qualsiasi consiglio sarebbe molto apprezzato, grazie.
Ecco l'errore pitone 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