我有一个应用程序,它使用了一个C++封装模块,使用OGR3D。尝试运行应用程序时
python /path/to/myapp.py
我知道错误了
dlopen(./MyOgreWrapper.so, 2): Library not loaded: @executable_path/../Frameworks/Ogre.framework/Versions/1.9.0/Ogre Referenced from: /path/to/MyOgreWrapper.so Reason: image not found
我从目录运行它肌肉萎缩者位于这样的位置肌肉萎缩者可以通过Python找到。食人魔框架位于../Frameworks中相对于肌肉萎缩者. 在
^{pr2}$我怀疑这是因为@executable_path被设置为python可执行文件的路径。在
有没有一种方法可以从Python设置环境,使@executable_path是当前目录?在
(我知道,如果我改变了食人魔的道路,一切都会成功的肌肉萎缩者还有一些与@loader_path的依赖关系,但这不是它开箱即用的方式,我宁愿不必这样做。)
不,无法从可执行文件中控制
@executable_path
。@executable_path
由动态加载程序dyld
解析,它使用它加载的可执行文件的路径。它对任何给定的可执行文件都是固定的。在另外,如果您可以更改它,那么可能会破坏进程尝试加载的其他内容。在
相关问题 更多 >
编程相关推荐