我一直试图让我的一个项目运行,但我遇到了麻烦。经过多次调试,我缩小了问题范围,但不知道如何进行。
一些背景,我在 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:未定义符号:_Py_ZeroStruct
我已经在我的可执行文件和共享库上运行了 ldd,没有什么区别。我还在上面的文件上运行了 nm -D,_Py_ZeroStruct 确实是未定义的。如果你们想打印命令,我很乐意提供它们。任何建议将不胜感激,谢谢。
这是完整的python错误:
回溯(最近一次通话最后): 文件“/usr/lib/python2.6/dist-packages/numpy/__init__.py”,第 130 行,在 导入 add_newdocs 文件“/usr/lib/python2.6/dist-packages/numpy/add_newdocs.py”,第 9 行,在 从库导入 add_newdoc 文件“/usr/lib/python2.6/dist-packages/numpy/lib/__init__.py”,第 4 行,在 从 type_check 导入 * 文件“/usr/lib/python2.6/dist-packages/numpy/lib/type_check.py”,第 8 行,在 将 numpy.core.numeric 导入为 _nx 文件“/usr/lib/python2.6/dist-packages/numpy/core/__init__.py”,第 5 行,在 导入多数组 ImportError:/usr/lib/python2.6/dist-packages/numpy/core/multiarray.so:未定义符号:_Py_ZeroStruct 回溯(最近一次通话最后): 文件“/home/constantin/workspace/OpenRAVE/src/grasp_behavior_2.py”,第 3 行,在 从 openravepy 导入 * 文件“/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 行,在 loadlatest 返回 _loadversion('_openravepy_') _loadversion 中的文件“/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 行,在 从 openravepy_int 导入 * ImportError:numpy.core.multiarray 导入失败