dyld:库未加载 - 当应用程序从命令行运行时

use*_*764 6 iphone dyld

当我从命令行运行iPhone应用程序时,在向项目添加框架时遇到一些困难.我的最终目标是从自动构建过程中运行应用程序测试.

当我从xCode运行我的应用程序时:

我向目标添加了一个"复制文件"构建阶段,一切都很顺利.副本设置为$(BUILT_PRODUCTS_DIR)为"绝对路径"

当我从终端运行我的应用程序(使用iphonesim项目)时,我收到此错误:

 dyld: Library not loaded: @rpath/OCMock.framework/Versions/A/OCMock

 UIKitApplication:indemnisation[0xb894][26380]     Referenced from: /Users/Admin/Library/Application Support/iPhone Simulator/User/Applications/CD5729B5-A674-49B2-91F6-AD398094B6F8/indemINT.app/indemINT
Run Code Online (Sandbox Code Playgroud)

我不明白的是,复制构建阶段只是将框架文件复制到与应用程序相同的目录中.

当我从命令行运行应用程序时,框架文件已经在同一目录中.有谁知道为什么它不起作用?

我还尝试在以下目录中添加OCMock.framework(没有成功):

 /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library

 /Library/Frameworks

 /Users/Admin/Library/Application Support/iPhone Simulator/User/Applications/CD5729B5-A674-49B2-91F6-AD398094B6F8
Run Code Online (Sandbox Code Playgroud)

先谢谢,文森特.

Cli*_*iff 8

我在Lion上的Xcode 4.2(4D199)中遇到了同样的错误.我将OCMock.framework文件夹拖放到我的项目中,然后选中"复制文件"复选框.我看到了上面的答案,并意识到我忽略了添加"复制文件"构建阶段以将框架移动到位.我添加了一个并在编译文件构建阶段后立即拖动它并尝试再次运行我的测试.在我将"复制文件"阶段中的目标更改为"产品目录"之前,我无法使其工作.使用"框架"或"共享框架"不起作用.


Mic*_*yan 2

iPhone 不支持传统的 Mac OS X 框架。虽然 iPhone 确实使用以“.framework”结尾的文件夹,但这些文件夹的结构与典型的 Mac OS X 框架不同。最值得注意的是,iPhone 框架只允许使用静态库,而典型的 Mac OS X 框架是动态加载的。该消息来自 dyld 表明您正在使用共享库;但是,针对 iPhone 的应用程序只能静态链接。