我计划创建swift静态库,并在ios swift应用程序中使用。我创建了一个名为SimpleLib的快速静态库,它包含一个公共类Greeting,它返回Hello World字符串:
//
// 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路径,并在链接框架中包含.a文件

但是,当我尝试在AppDelegate中引用Greeting类时,我得到了错误-使用未解析的标识符'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静态库吗?
发布于 2019-01-25 15:09:30
在应用程序的SWIFT_INCLUDE_PATHS设置中包含您的module.modulemap和arm64.swiftmodule路径。
发布于 2019-01-17 07:48:42
问题是您的类与您的模块具有相同的名称。尝试使用simple.simple()创建类的实例,或者重命名模块或类。
发布于 2019-10-03 03:22:24
确保将构建产品中的.a库和相关.swiftmodule添加到应用程序文件中。然后在“链接框架和库”中链接.a库,并确保它出现在构建阶段的“链接二进制文件与库”中。
最后,在构建设置中,在"Swift编译器-搜索路径“>”导入路径“下,将路径添加到.swiftmodule文件夹。这些路径是相对于.xcodeproject的。
确保您正在使用的类和方法是开放的或公共的。
https://stackoverflow.com/questions/54226824
复制相似问题