cocoa - 混合 Carbon 和 Cocoa 那么其他平台呢?

标签 cocoa winapi cross-platform

我有一个静态库,它在 OS X 和 Windows 版本之间共享大量源代码。两个版本都使用 CMAKE。由于最近的请求,我考虑了 linux 版本。

  1. OS X 并使用 Carbon。

  2. Windows 使用直接的 win32 API,无 MFC

  3. 使用 C++ (.cpp) 编写

我的问题是:

  1. 对于 OS X 版本,Apple 放弃了 64 位 Carbon,那么我可以在这个库中混合使用 Carbon 和 Cocoa 类吗?我是否只需将所有文件更改为 .mm(对于 Cocoa 所需的 Objective-C)

  2. 如果我更改为 .mm,这会如何影响 Windows 编译?

  3. 如果我更改为 .mm 对 Linux 有何影响?

任何人都可以提供有关如何完成此任务的一些见解吗?

最佳答案

真的建议不要混合使用 Objective-C 和 C++。尽管在 OS X 上它们都是由 GCC 编译的,因此可以实现这一点,但 Carbon 和 Cocoa 库并不是真正要混合的。 Carbon 和 Cocoa 都是完整且独立的窗口库。然而,在 OS X 10.2 中,可以在窗口级别混合它们(Carbon 应用程序可以托管 Cocoa 窗口),并且任何高于 10.2 的版本都应该能够将库混合到小部件级别。因此,只要您的库的所有用户都使用 OS X 的更新版本,就有可能......我仍然不推荐它。另外,您还必须链接所有额外的代码。

更改为 .mm 的效果实际上取决于您的编译器。我猜您使用的是 gcc,因为您的库将适用于所有三个平台,因此在 gcc 上,.mm 代码可以编译为 C++,如下所示。

gcc -x c++ [sourcefile]

关于cocoa - 混合 Carbon 和 Cocoa 那么其他平台呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1138457/

相关文章:

cocoa - 在 NSPersistentDocument 中哪里可以获取托管对象上下文?

iphone - 从 NSMutableData 实例获取字节数

c++ win32编辑框光标不闪烁

c# - 如何控制电源键按下关机?

java - 跨平台开发建议

Cocoa/Mac - 运行应用程序的外部配置设置

c - 高强制级别应用程序的持久化-windows

listview - 在 Tableview xamarin.forms 中创建 Listview

c++ - 如何保证与外部设备通信的 char 和 short 位

iphone - UILabel sizeToFit 和约束