我一直在尝试运行我的一个项目,但遇到了问题。 经过很多调试,我已经缩小了问题的范围,但不知道如何继续。
一些背景:我正在使用C ++代码中的python脚本。 这在Python上有点记录,并且我设法在我的基本可执行文件中很好地运行它。包括 #include 和 -lpython2.6,一切都很出色。
然而,当从共享库(.so)运行此python脚本时,出现了困难。 此共享库由模拟系统(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 导入错误:/usr/lib/python2.6/dist-packages/numpy/core/multiarray.so:未定义符号:_Py_ZeroStruct 回溯最近的调用: 文件“/home/constantin/workspace/OpenRAVE/src/grasp_behavior_2.py”,第3行,from openravepy import * 文件“/home/constantin/workspace/rospackages/openrave/lib/python2.6/site-packages/openravepy/__init__.py”,第35行, openravepy_currentversion = loadlatest() 文件“/home/constantin/workspace/rospackages/openrave/lib/python2.6/site-packages/openravepy/__init__.py”,第16行, return _loadversion('_openravepy_') 文件“/home/constantin/workspace/rospackages/openrave/lib/python2.6/site-packages/openravepy/__init__.py”,第19行, mainpackage = __import__("openravepy", globals(), locals(), [targetname]) 文件“/home/constantin/workspace/rospackages/openrave/lib/python2.6/site-packages/openravepy/_openravepy_/__init__.py”,第29行, from openravepy_int import * 导入错误:numpy.core.multiarray无法导入