我有一个跨平台编程的初学者。我的项目是一个简单的3d项目,它能很好地在windows上工作,它是由可视化的sutido来实现的。然后,我在xcode 6下创建了项目。
在我的项目中有一个核心库,我在windows下将它编译成一个dll文件,并通过一个名为Editorbuilder的工具静态链接它,这个工具用于构建编辑器脚本。核心项目是Core.vcxproj,它在ProjectRoot/二进制文件/Win32 32/Debug/下生成一个Core.dll。EditorBuilder.vcxproj在ProjectRoot/二进制文件/Win32 32/Debug下生成一个EditorBuilder.exe。如果我在visual studio或控制台窗口中运行此工具,它会运行得很好。
在macos下,我使用xcode 6。首先,我创建了一个动态库项目,它有一个产品libCore.dylib,它将生成到ProjectRoot/二进制文件/Mac/Debug。然后在xcode 6中创建EditorBuilder项目,这是一个普通的命令行工具,并将libCore.dylib的引用添加到产品中:
项目图景
文件生成成功。
它编译成功,如果我在Xcode6下调试Xcode6使用Ctrl + R,它运行良好,但是当我在终端中运行EditorBuilder或双击它时,它无法启动,因为:
/Users/bodong/Documents/Hikari/Binaries/Mac/Debug/EditorBuilder ; exit;
bodeMacBook-Pro:~ bodong$ /Users/bodong/Documents/Hikari/Binaries/Mac/Debug/EditorBuilder ; exit;
dyld: Library not loaded: /usr/local/lib/libCore.dylib
Referenced from: /Users/bodong/Documents/Hikari/Binaries/Mac/Debug/EditorBuilder
Reason: image not found
Trace/BPT trap: 5
logout
所以我的问题是,libCore.dylib位于同一个目录中,为什么EditorBuilder进程找不到dylib呢?为什么EditorBuilder在用Ctrl +R在xcode 6中运行时可以找到dylib?
windows dll和macos dylib有什么区别?macos下的搜索策略是什么?
ps:如果我创建了一个目录/usr/local/lib,并将libCore.dylib复制到这个dir,它就能正常工作。如何使EditorBuilder加载与父dir相同的dylib?
发布于 2015-07-21 22:21:53
你可以在这篇文章中找到答案:
iOS app with framework crashed on device, dyld: Library not loaded, Xcode 6 Beta
回复留在这里以供参考。
在同一页中的这篇文章解释了为什么会发生这种情况:https://stackoverflow.com/a/28469804/999817
发布于 2014-11-24 01:55:47
在构建设置中有一个安装目录,将该目录更改为输出目录,它运行良好。但是我不知道我是否把这个应用程序部署到另一个mac上,它能正常工作吗?
https://stackoverflow.com/questions/27079093
复制相似问题