【发布时间】:2020-12-22 20:11:14
【问题描述】:
我想在我的 D 应用程序中大量使用 extern (Objective-C) 类,因为我不想手动发送 Objective-C 消息。但是,我主要使用 AppKit、IOKit 和 Foundation 等框架,extern (Objective-C) 需要静态链接才能根据documentation 工作。
但是,我不认为静态链接操作系统库是一个好主意。在考虑不同的 macOS 版本时,它似乎很脆弱。
所以我的问题是,
- 静态链接 Foundation 和 AppKit 真的是个坏主意吗?
- 如果是,那么是否可以使用
dlopen动态加载 .framework 文件,然后将函数指针绑定到extern (Objective-C)类?
【问题讨论】:
-
作为
extern的替代品,您或许可以考虑使用单例? -
@skaak 这似乎与我的问题无关。
extern是一种将链接器的名称修改从 D 更改为 Objective-C 的方法。 -
是的,抱歉。我正在考虑通过某个地方的某个单例来完成与 Objective-C 的所有接口,但这并没有改变或帮助太大。
-
文档中的静态链接要求在哪里?
-
@Willeke 从dlang.org/spec/objc_interface.html#frameworks 开始显示的所有示例都在编译时将框架传递给链接器。如果可以进行动态链接,则不会显示。
标签: objective-c linker d