我有一个Swift项目(由Swift Package Manager组织),其中包括框架目标和引用框架的可执行目标。这两个目标都引用一个C系统模块。以前,所有内容都在可执行目标中,但是我开始将一些内容移入框架中,以使其更具可重用性。
奇怪的是,我在框架模块中声明的C类型扩展无法在可执行目标内部访问。例如,我有很多这样的便捷初始化器:
import Clib
public extension ClibStruct {
public init(width: UInt32, height: UInt32) {
self.init()
self.width = width
self.height = height
}
}
如果我在框架目标(声明了它的地方)中调用此初始化器,则一切正常。但是,如果我从可执行目标中调用它,则会出现错误:
Cannot invoke initializer for type ClibStruct with an argument of type...
这是对扩展程序的限制吗?是否存在解决方法或构建选项来对其进行纠正?