构建 xcframework 时架构 arm64 的未定义符号

时间:2021-05-28 20:13:27

标签: ios swift xcode xcframework

我有一些第三方静态库,我已将它们放入 XCFramework 中。当我将框架添加到另一个应用程序时,导入框架时库中的类是可见的,但是当我编译应用程序时,出现以下错误:

Undefined symbols for architecture arm64:

  "_OBJC_CLASS_$_<Class Name>", referenced from:

      type metadata for Local object.o

  "_OBJC_METACLASS_$_<Class Name>", referenced from:

      _OBJC_METACLASS_$__TtC8Local object.o

环境:

IDE:Xcode 12.4

操作系统:ma​​cOS 11.15.4 - Catalina

机器:MacBookPro15,1

详情:

XCFramework 是从基于框架模板的项目构建的。

库,*.a 文件,包含在项目中并且它们是“必需的”。它们各自的头文件 *.h 文件被包含并设置为公共。它们也在伞头文件中使用以下符号列出:

#import <FrameworkName/Library name.h>

在构建设置中,SKIP_INSTALL 设置为 NO。 BUILD_LIBRARY_FOR_DISTRIBUTION 设置为 YES。

我使用以下终端命令来存档框架:

xcodebuild archive -scheme Name -archivePath ./Name-iOS SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES

然后我使用以下终端命令来创建 Xcframework:

xcodebuild -create-xcframework -framework ./NAME-iOS.xcarchive/Products/Library/Frameworks/NAME.framework -output ./NAME.xcframework

我将这个产品放到我想要使用库的应用项目的“框架、库和嵌入式内容”部分。我可以将库放入框架之外的应用程序中(我有并且它们工作得很好)但我想构建一个可移植的对象,以便我可以将此功能从一个项目移动到另一个项目,而无需进行大量复制和粘贴。

到目前为止,一切都很好。当我在 swift 类中引用一个对象时,如下所示:

import Foundation
import NAME

class AppLocalObject: ClassInName {

}

一切似乎都很好。我没有从 Xcode 收到任何错误,说它找不到“ClassInName”对象。但是当我尝试编译应用程序时,我收到了上述错误。

我确定我做错了一些很容易修复的问题。但我不知道那是什么。

0 个答案:

没有答案