2

我有一些第三方静态库已放入 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

操作系统: macOS 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”对象。但是当我尝试编译应用程序时,我得到了上述错误。

我确定我做错了很容易解决的问题。但我不知道那是什么。

4

0 回答 0