【发布时间】:2020-05-09 13:14:04
【问题描述】:
我在 Swift 中有一个静态库,我想从另一个 Swift 项目访问这个库类。无法正确引用库中的类。
我的名为StaticLib 的静态库包含层次结构,
静态库项目 - 层次结构
StaticLib (project)
StaticLib
StaticLib.swift
Products
libStaticLib.a
静态库项目 - StaticLib.swift
public class StaticLib {
public class func test(string: String) {
Printer().printMe(string: string)
}
}
class Printer {
func printMe(string: String){
print("This is test tring: \(string)")
}
}
宿主应用 - AppDelegate.swift
import StaticLib
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
StaticLib.test("How do you do?") // error
return true
}
}
我已经完成的步骤 -
- 在 Xcode Project Navigator 中单击项目
- 点击+添加新目标
- 选择框架和库>静态库>下一步
- 输入名称
StaticLib(在 Swift 中)> 完成 - 打开StaticLib.swift并输入
public class StaticLib {
public class func test(string: String) {
Printer().printMe(string: string)
}
}
class Printer {
func printMe(string: String){
print("This is test tring: \(string)")
}
}
- 选择
StaticLib架构,构建>确定 - 将
libStaticLib.a复制到名为HostApp/Libs/的新文件夹中 - 在 Project Navigator 中选择项目 > 单击主应用程序目标 > 选择 General
- 在 Framework、Libraries 和 Embedded Content 部分中单击我看到
libStaticLib.a已由 Xcode 智能添加 - 选择主应用架构 > 构建 > 确定
- 选择 AppDelegate.swift > 添加
import StaticLib - 添加
StaticLib.test("How do you do?")
- 尝试构建
编译错误:
使用未解析的标识符“StaticLib”
我该如何解决这个问题?我需要在库中创建任何头文件吗?
注意:我已成功嵌入libStaticLib.a,它出现在主机应用General -> Frameworks, Libraries and Embedded contents 标签中。
【问题讨论】:
-
你在你的
AppDelegate中做了import StaticLib吗?此外,test函数也需要为public。 -
@DávidPásztor 当我
import StaticLib它给了No such module 'StaticLib' -
您是否已经尝试过How can I use a static library in Swift中的步骤
-
@david 我正在为纯 swift 主机应用程序使用纯 swift 库,所以我没有添加任何头文件。如果我需要库头的内容应该是什么?参考帖子也没有讨论我的情况。
-
@DávidPásztor 我已经公开了类函数。
标签: ios swift xcode frameworks static-libraries