Xcode:如何将我的 .app 项目构建为共享库?

标签 xcode cocoa attributes visibility dynamic-library

首先,我在 MAC OS X 10.6 上使用 Xcode 3.2.5

我有一个可以正常构建和运行的 Cocoa 应用程序项目。我在这个项目中有一些函数,我正在使用它们导出:

#define CORE_EXPORT __attribute__ ((visibility ("default")))

extern "C" {
    CORE_EXPORT IUIEventHandler* GetIUIEventHandler();  
}

如果我希望另一个动态库项目能够链接到我原来的 Cocoa 应用程序,以便它可以使用导出的 GetIUIEventHandler 函数,我需要做什么?

我是否需要将原始 Cocoa 应用程序也构建为动态库?或者有没有办法链接 Cocoa 应用程序的可执行文件?

最佳答案

单个 Xcode 项目由多个目标组成。每个目标都会产生一个产品。产品类似于应用程序或共享库。

项目中的每个文件可以属于零个或多个目标,但通常属于一个。

我会重新组织您的项目,使其具有两个目标,一个是共享库或框架,另一个是应用程序。

您可能会在框架中得到很多通用代码,而在应用程序中只有非常特定于应用程序的概念。这通常会产生澄清代码并帮助维护一些良好抽象的副作用。许多项目都是以这种方式构建的,即使该框架仅由一个客户使用,这样他们就可以从它所引导的更简洁的设计中获益。

关于Xcode:如何将我的 .app 项目构建为共享库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6848271/

相关文章:

jquery - 通过 inkskape 选择 SVG 元素 :label attribute

c# - 使用 List<string> 类型作为 DataRow 参数

objective-c - 当点击 'Next' 时移动到下一个 UITextField

iOS 开发 - 圆形矩形按钮向下移动子菜单

iphone - 寻找用于在 Objective-C、C、C++ 中生成和解析 vCard 的库(适用于 iPhone)

cocoa - 当 NSWindow 的标题栏在全屏模式下可见时如何收到通知?

objective-c - Xcode 显示对焦环

model-view-controller - 使用 spring 3 注释,jsr303 既没有获取 BindingResult 也没有获取 bean 名称 'dataForm' 的普通目标对象

xcode - 如何让 Jenkins 推送到 GitHub 但不触发推送构建

SwiftUI - ForEach 同时切换多个按钮