Ios 我的swift静态框架是dons';t使用iphone模拟器在OC文件中工作
我制作了一个混合了Swift和OC的静态框架,它包括架构:“armv7 i386 x86_64 arm64”。 它还包括所有.swiftmodule文件: 它与真实设备或真实设备和模拟器的swift文件配合良好 但是仅当我在Objective-C文件中使用framework的swift类,并且目标设备是iphone模拟器时,它会给我一个错误: BaseNavigationController(以swift编写)、BaseViewController(以OC编写)是我的框架类,只有swift类不工作,BaseNavigationController是具有“开放”级访问控制的UINavigationController的子类,framework'-swift.h'文件生成了OC接口 为什么它会报告错误?我仔细检查了我的项目,但没有发现异常Ios 我的swift静态框架是dons';t使用iphone模拟器在OC文件中工作,ios,swift,static,frameworks,Ios,Swift,Static,Frameworks,我制作了一个混合了Swift和OC的静态框架,它包括架构:“armv7 i386 x86_64 arm64”。 它还包括所有.swiftmodule文件: 它与真实设备或真实设备和模拟器的swift文件配合良好 但是仅当我在Objective-C文件中使用framework的swift类,并且目标设备是iphone模拟器时,它会给我一个错误: BaseNavigationController(以swift编写)、BaseViewController(以OC编写)是我的框架类,只有swift
我的xcode版本是:11.5版(11E608c),而project build\u设置的swift版本是5.0。这里的问题很可能出现在所使用的构建脚本中。 这里的问题可能是,在使用lipo合并为设备(
armv7
&arm64
体系结构)和模拟器(i386
,x86_64
)体系结构构建的框架之后,您还应将为模拟器生成的BaseCore Swift.h
的内容复制到为armv7
和arm64
体系结构生成的内容
Objective-C要求在BaseCore Swift.h
文件中为i386和x86_64体系结构定义符号,以便Swift类工作。执行生成后,可以在Headers文件夹中找到此文件。
如果有构建脚本,您可以简单地使用cat
命令在构建脚本中执行此复制
这里的问题不是没有包括模拟器的体系结构,而是没有在模拟器体系结构的BaseCore Swift.h
文件中定义符号,因此Objective-C可以提取它们
请随时发表评论或询问其他问题。
如果执行上述操作解决了您的问题,请将其标记为已接受:)太棒了!您的回答完美地解决了我的问题。仔细检查发现,在“-Swift”文件上方有一行代码:
(如果0)elif defined(u arm64_uuuuuu)和&&uu arm64_uuu
。嘿,兄弟,你在哪个文档中找到了需要复制-Swif.h
文件的描述,还是官方提供了创建Swift静态库的完整文档?