如何在构建需要此包的 xcode 项目时链接 macOS 包所需的框架
Posted
技术标签:
【中文标题】如何在构建需要此包的 xcode 项目时链接 macOS 包所需的框架【英文标题】:How to Link a framework required by a macOS bundle when building an xcode project requiring this bundle 【发布时间】:2021-12-21 03:02:28 【问题描述】:我有一个 macOSX 捆绑项目 B,它需要 GameKit 框架。我可以将它编译成一个包,创建 B.bundle。
我把这个 B.bundle 放在需要这个包才能工作的项目 A 中。当我尝试构建项目 A 时,出现链接错误:
"__OBJC_CLASS_$_GKAccessPoint", referenced from:
obj-class-ref in ....
"__OBJC_CLASS_$_GKLocalPlayer", referenced from:
obj-class-ref in ....
ld: symbol(s) not found for architecture arm64
GKAccessPoint 和 GKLocalPlayer 是我的 bundle 项目使用的两个类。看起来它根本找不到类(我尝试为其他架构构建,它也失败了,但架构名称发生了变化)。
我真的不知道如何使链接工作。这是我的项目 B 中的设置:
这里是我的项目 A 中的设置:
谢谢!
【问题讨论】:
【参考方案1】:好的,折腾了一天,终于知道是什么问题了。
我正在使用 unity 生成主项目,而原生 GameKitNativebundle.bundle 以及 GameKitNativebundle.mm 文件位于项目内的 Assets 文件夹下。
问题是我已将 .mm 文件勾选为包含在独立版本中。所以xcode试图直接编译这个.mm文件并试图链接它,失败了。
取消勾选 .mm 文件中的独立复选框并从 unity 重建 xcode 项目,再次创建项目链接。
【讨论】:
以上是关于如何在构建需要此包的 xcode 项目时链接 macOS 包所需的框架的主要内容,如果未能解决你的问题,请参考以下文章
如何使用命令行将“其他链接器标志”添加到 xcode 项目?
我有一个Xcode静态库项目,如何添加测试目标,以便我可以在那里运行它? (而不是在链接到它的项目中。)