繁体   English   中英

使用混合的Swift和Objective-C代码创建框架

[英]Creating a framework with mixed Swift & Objective-C code

我有一个混合代码(objective-c和Swift)的项目,我需要将其打包为框架。 它还使用了一些外部框架。

我的伞标题有许多导入到我使用的框架的不同标题,以及我的项目中的objective-c源代码(因此可以通过Swift代码访问它)。 我还有一个swift文件,例如MyFramework.swift,它有一些代码,我想向框架的用户公开。

然而,框架编译时,当我尝试在另一个Swift项目中使用它时,我无法访问MyFramework.swift的内容。 即使文件存在(使用Swift源代码)在框架产品中也是如此!

但是,我能够从公共标题中访问objective-c代码。 所以我试着在Objective-c中用MyFramework.swift编写代码(MyFramework.h和MyFramework.m),因为我认为在Objective-c和swift中暴露代码可能是一个问题(尽管从我读到的内容 - 它不应该是)。 这样就可以访问这个类中的对象,但后来我遇到了一个链接器错误:

架构x86_64的未定义符号:
“_OBJC_CLASS _ $ _ MyObject”,引用自:ViewController.o中的__TZFC12TestFW6MyObject20testfMS0_FCSo16UIViewControllerT_ ld:找不到架构x86_64的符号

这实际上发生在我试图引用的每个公共swift类中。 我确保这些文件存在于项目设置的Build Phases下的“Compile Sources”列表中,所以这不是问题。

我很无能为力。 有任何想法吗? 谢谢。

要解决您的项目,需要检查两件事。

  1. 您的项目中是否有正确的“有效架构”(下面的第1张图片),以及
  2. 你是否有一个正确的BridgingHeader用于在同一个项目中使用Swift和Obj-C(第2张图片)?

项目设置 - 有效架构

Swift编译器 - 桥接头

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM