可能重复:
using frameworks in a command line tool
嘿,
我编写了一个命令行“基础工具”,它广泛地使用了RegexKit.framework。在Xcode中运行时,所有操作都正常,但是如果我编译发行版构建并尝试在终端上运行它,则会得到以下错误:
dyld: Library not loaded: @executable_path/../Frameworks/RegexKit.framework/Versions/A/RegexKit仔细检查发现,RegexKit.framework包与我的可执行文件位于同一个目录中.我已经做了一些研究,我认为由于命令行工具不使用应用程序包,所以Xcode没有地方可以将框架复制到哪里。因此,我猜我需要将框架编译为一个静态库,并将其包含在我的代码中.我说的对吗?如果是的话,我该怎么做呢?在终端中我能做些什么来指向外部的框架吗?
任何帮助都会受到极大的欢迎,我已经用头撞了好几天了!
提前谢谢你,
汤姆
发布于 2009-06-03 20:06:37
所以..。最后,我所做的是用一个不同的安装目录(在部署部分,在目标信息的Build选项卡下)重新编译框架--我将它设置为@executable_path。
然后我编译了这个框架,并替换了我的Utilitie项目中的框架,我还将compiled阶段更改为将框架复制到“可执行文件”,而不是框架。
好消息是,这解决了我原来的问题--但很明显,框架必须与可执行文件位于同一个目录中。
所以这让我松了口气,但我还是想知道如何静态编译RegexKit.framework!
发布于 2009-06-04 07:04:19
您不应该在包的Executable文件夹中安装框架。它应该在框架文件夹中。您需要在项目中创建复制文件阶段,以复制框架,并且需要将目标设置为“框架”。“只在安装时复制”应该是未选中的。
在测试这一点时,您应该确保执行一个干净的构建。我通常删除构建文件夹,而不是使用Xcode的清洁菜单选项,因为它更快,更全面。
另外:您不能静态地链接到框架。如果您想静态地链接到某个东西,它需要是一个静态库,所以在本例中,您需要使用RegexKit进行黑客攻击。请记住,静态库不能包含资源,而框架作为包可以。
https://stackoverflow.com/questions/941711
复制相似问题