如何在xcode之外运行objective-c控制台应用程序(带有库)?

如何在xcode之外运行objective-c控制台应用程序(带有库)?,objective-c,xcode,Objective C,Xcode,我有一个简单的控制台应用程序,用于从更大的项目中运行库。控制台应用程序是XCode项目中的一个目标,该项目还包含库以及一些我现在不关心的其他目标。控制台目标通过在构建阶段目标依赖项中列出库并将二进制文件链接到库来引用库 通过单击run按钮并在All output下检查控制台输出,我可以在XCode中很好地运行控制台程序 但是,如果我尝试在XCode之外运行,就会出现加载错误。我在ProjectNavigator的Products下选择console应用程序,然后在信息面板的Identity部分找

我有一个简单的控制台应用程序,用于从更大的项目中运行库。控制台应用程序是XCode项目中的一个目标,该项目还包含库以及一些我现在不关心的其他目标。控制台目标通过在构建阶段目标依赖项中列出库并将二进制文件链接到库来引用库

通过单击run按钮并在All output下检查控制台输出,我可以在XCode中很好地运行控制台程序

但是,如果我尝试在XCode之外运行,就会出现加载错误。我在ProjectNavigator的Products下选择console应用程序,然后在信息面板的Identity部分找到完整路径。当我将此路径复制到终端窗口并运行它时,会出现如下错误:

dyld: Library not loaded:
@executable_path/../Frameworks/[LIBRARY].framework/Versions/A/[LIBRARY]
Referenced from: [THE PATH THAT I TYPED]
Reason: image not found
我应该做些什么来让我的控制台应用程序从控制台执行


请注意,在复制文件阶段,我尝试将子路径留空,并将其设置为@executable_path/。/Frameworks per,这是关于cocoa应用程序的,但两种方法都没有帮助。

正如上面的评论员所解释的,dyld是动态加载程序,它正在打印的路径上查找我的库。当它说@executable_path时,它表示我实际尝试运行的控制台应用程序的位置

查看XCode的编译输出,我看到了如下文件夹层次结构:

Debug/
    MyProgram
    Frameworks/[LIBRARY].framework/Versions/A/[LIBRARY]
无论出于何种原因,此结构与加载程序所需的不匹配-它在../Frameworks而不是../Frameworks中查找库

我没有弄乱加载程序使用的环境变量,也没有尝试调整程序本身,而是将这些文件复制到一个新文件夹中,其结构在错误消息中指定:

foo/
    bin/MyProgram
    Frameworks/[LIBRARY].framework/Versions/A/[LIBRARY]

我现在可以从终端上毫无问题地运行foo/bin/MyProgram。

您能在捆绑包中找到框架吗?也许你需要一个复制框架phase@xlc-唉,我甚至不知道那是什么意思。我来自GCC/MSVC后台,在那里编译并运行它,然后只考虑安装调试器,所以这对我来说是非常陌生的,这是在环境中运行的,而不是在它之外运行的。明天我会用谷歌搜索你的话,看看它们会把我引向何方!msvc世界中缺少dll的问题。查找何处为可执行路径,并检查此文件是否存在可执行路径/。/Frameworks/[LIBRARY].framework/Versions/A/[LIBRARY]您的运行时搜索路径需要指向@loader\u path/…,以便DYLD在启动时加载它。