代码之家  ›  专栏  ›  技术社区  ›  Tom

如何在命令行实用程序中使用动态加载库[[副本]

  •  0
  • Tom  · 技术社区  · 17 年前

    可能重复:
    using frameworks in a command line tool

    dyld: Library not loaded: @executable_path/../Frameworks/RegexKit.framework/Versions/A/RegexKit
    

    仔细检查发现RegexKit.framework捆绑包与我的可执行文件位于同一目录中。。。我做了一些研究,我认为由于命令行工具不使用应用程序包,所以Xcode无法将框架复制到任何地方。所以我猜我需要将框架编译为一个静态库,并将其包含在我的代码中。。。我说得对吗?如果是的话,我该怎么做呢?我可以在终端中做些什么,从外部指向框架吗?

    2 回复  |  直到 9 年前
        1
  •  0
  •   Tom B Tom B    17 年前

    所以最后,我使用不同的安装目录(在部署部分,在目标信息的Build选项卡下)重新编译框架——我将其设置为just@executable\u path。

    然后我编译了框架并替换了Utilitie项目中的框架,我还更改了复制文件构建阶段,将框架复制到“可执行文件”而不是框架。

    好消息是,这修复了我原来的问题——但显然,框架必须与可执行文件位于同一目录中。

    所以这让我很不顺利,但我仍然很想知道如何静态编译RegexKit.framework!

        2
  •  0
  •   Chris Suter    17 年前

    您不应该在捆绑包的可执行文件夹中安装框架。它应该在Frameworks文件夹中。在项目中需要一个复制框架的复制文件阶段,并且需要将目标设置为“框架”“仅在安装时复制”应为 .

    在测试时,您应该确保执行干净的构建。我通常会删除build文件夹,而不是使用Xcode的Clean菜单选项,因为它更快更全面。