所以,我建立一个项目,它从一个编译库(名为.dylib或.so)使用功能。我在适当位置标头和库文件(这是QtRoot的一部分,顺便说一句),但是当我尝试建立我的Xcode项目,我得到一个调试器错误:

  

dyld的:库未加载:@ rpath的/ libRIO.so     从参考:/用户/ paulthompson /文件/程序/制造产品/调试/ MacHeliosSim.app /内容/ MacOS的/ MacHeliosSim     原因:图片未找到   sharedlibrary应用负载规则所有   一个“继续”之后的数据格式化暂时不可用,将重新尝试。 (目前不能调用到装载机,它被锁定。)

现在,它内置如果我从Finder中打开它会运行得很好程序本身,但每当我尝试从Xcode中运行它,它barfs我。这是什么rpath的东西,为什么不能在调试器找到这些库,尽管它本身的Xcode知道他们在哪里,显然从Finder运行可以找到它们太当程序?

有帮助吗?

解决方案

http://en.wikipedia.org/wiki/Rpath_(连接)

它是存储在二进制找到共享库的路径。 当你开始从Finder中的应用程序,它可能是一个应用程序捆绑?当创建应用程序包,共享库被复制到应用程序包,并以捆绑的库的路径变得相对然后。 (@executable_path /../框架/ foobar的)。你是如何创建的版本,从Finder中的作品?

是否错误上面开始从xcode中应用程序时发生在链接时或? (在后一种情况下,尝试用DYLD_LIBRARY_PATH)

而且,。所以扩展libRIO代替名为.dylib看起来有点可疑。

其他提示

添加将rpath在链接阶段,像在此(Qt Creator中)示例:

  

LIBS + = -L / USR /本地/根/ lib中-lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lthread -lpthread -Wl,-rpath,在/ usr /本地/根/ lib中-lm -ldl

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top