ios - 在 Xcode 10.1 中创建和使用 swift 静态库
问题描述
我计划创建 swift 静态库并在 ios swift 应用程序中使用。我创建了一个名为 SimpleLib 的快速静态库,它包含一个返回 Hello World 字符串的公共类 Greeting:
//
// Greeting.swift
// SimpleLib
//
import Foundation
public class Greeting {
public func Hello() -> String {
return "Hello World";
}
public init() {
}
public static func SayMorning() -> String{
return "Hi, Morning";
}
}
swift 静态库项目如下所示:
module.modulemap 定义如下:
module SimpleLib {
header "SimpleLib-Swift.h"
export *
}
我构建并生成了一个 libSimpleLib.a 文件,我将 .a 和其他文件(互联网上的其他帖子提到需要放在 app 文件夹中)放在 app 文件夹中:
在应用程序项目中,我在 FREAMEWORK_SEARCH_PATHS、LIBRARY_SEARCH_PATHS 和 HEADER_SEARCH_PATHS 中包含 Libs 路径,并在 Linked Framework 中包含 .a 文件
但是,当我尝试在 AppDelegate 中引用 Greeting 类时,出现错误 - Use of unresolved identifier 'Greeting'
//
// AppDelegate.swift
// testStatic
//
import UIKit
import SimpleLib
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
var s = Greeting
return true
}
......
}
如何在静态库中制作 Swift 对象可以参考 App。在 swift 静态库中导出类/函数的正确步骤是什么?有人成功在 iOS 应用程序中构建和使用 swift 静态库吗?
解决方案
在应用程序的设置中包含您的module.modulemap
和arm64.swiftmodule
路径。SWIFT_INCLUDE_PATHS
推荐阅读
- html - 调整大小后定位输入标签光标
- android - Unity3d Android Java堆空间错误
- php - 无法使用 php 连接到外部 FTPS 服务器
- c++ - 在c ++中使用递归从字符串中删除所有辅音
- c++ - 未命名命名空间或命名命名空间或内联
- unity3d - 统一的相机资产
- android - Android:isProviderEnabled(LocationManager.NETWORK_PROVIDER) 不起作用。只有 isProviderEnabled(LocationManager.GPS_PROVIDER)
- google-cloud-dataflow - 如何配置数据流管道以使用共享 VPC?
- assembly - 结构与参数中数据对齐的差异?
- javascript - 使用 jQuery 生成时,多个 Bootstrap 选项卡保持活动状态