_swiftoverride_class_getSuperclass libswiftCompatibility50.a

Unity摊
 Undefined symbols for architecture armv7:
   "_swiftoverride_class_getSuperclass(swift::TargetMetadata<swift::InProcess> const*)", referenced from:
       swift::swift50override_conformsToProtocol(swift::TargetMetadata<swift::InProcess> const*, 
swift::TargetProtocolDescriptor<swift::InProcess> const*, swift::TargetWitnessTable<swift::InProcess> 
const* (*)(swift::TargetMetadata<swift::InProcess> const*, 
swift::TargetProtocolDescriptor<swift::InProcess> const*)) in 
libswiftCompatibility50.a(ProtocolConformance.cpp.o)

环境: Unity2018.4.36f1 And Xcode12+ 编译
原因: Swift、OC 混编时需要配置Xcode Project, 使用xxxxx Bridging-Header.h

解决(Xcode配置):

1. Adding a new Swift file and a Brigde header:

  1. File -> New -> File


    image.png
  2. Select Swift File


    image.png
  3. Confirm Create Bridging Header


    image.png

2.Go to Build Settings and set Always Embed Swift Standard Libraries to YES

image.png
结果

------------------------------------------------分割线------------------------------------------------

解决(Unity打包过程的话):

  1. 将任一空的.swift文件放至Assets/Plugins/iOS目录下
  2. 打包后处理增加:
    [PostProcessBuild(900)]
    public static void OnPostprocessBuild(BuildTarget target, string path)
    {
        PBXProject project = new PBXProject();
        string pbxProjectPath = PBXProject.GetPBXProjectPath(path);
        pbxProject.SetBuildProperty(targetGuid,"ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES");
     }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容