【问题标题】:Application bundle with dylib带有 dylib 的应用程序包
【发布时间】:2016-10-01 13:49:02
【问题描述】:

所有,

首先,关于该主题的每个问题都是关于部署即用型应用程序的。我的情况不同。

我正在使用 C++ 的 Xcode 5.1.1(意味着我仍在编写代码)在 Mac 上开发应用程序。我的应用程序包含主要的二进制可执行文件(设置为 Cocoa 捆绑应用程序)和几个 dylib 库(我正在编写并可以控制)。

问题在于我想在某个时候测试我的代码。我在“Build Phases->Link Binary With Libraries”中的主应用程序项目引用了二进制文件使用的库,而 dylib 在那里有它们的依赖关系。

现在当我尝试调用 dlopen 时,调用失败,因为找不到 dylib 文件。

所以我的问题是:

  1. 应将 dylib 文件存储在包中吗?
  2. 如果是 - 我如何将它们放在那里?因为我认为我所做的一切都不够。
  3. 如果不是 - 测试代码的正确方法是什么?

感谢您提供的任何信息。

【问题讨论】:

    标签: c++ xcode dylib


    【解决方案1】:

    Dylib 不存储在应用程序包中,但它们与应用程序一起编译并包含在二进制可执行文件中,要包含它们,只需将它们添加到 Target DependenciesLink With Libraries 在“构建阶段”中不需要 dlopen

    并包含以下标题:

    #include "Dylib.h"
    

    【讨论】:

    • 首先,不确定您所说的“不需要 dlopen”是什么意思?我通过执行“dlopen/dlsym”调用了库中的一个函数。第二 - 没有“#import”。只有“#include”。你错过了“C++”标签吗?也正如我所说 - “我还在做开发",这是为了测试目的。
    • 抱歉导入,我的意思是不需要 dlopen,操作系统将负责链接库和所有符号“又名函数名称和常量”
    • 好的,但这意味着它将静态链接我的dylib,这违背了创建它的目的。
    • 如果你想复制应用程序包转到 Build Phases 并添加 Copy Files 并选择目标到 Frameworks 并添加所有 Dylibs
    • 这不是我想要的。我的问题是 - 处理这种情况的 OSX 原生方式是什么? dylibs 通常存储在包中吗?尤其是在开发和测试阶段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多