如何使用 SwiftPM 在 objective-c 模块中使用 swift 模块?
How to use a swift module in an objective-c module with SwiftPM?
这里是根目录的例子
├── Package.swift
└── Sources
├── Objc-cli
│ └── main.m
└── Swifty
└── MyStruct.swift
其中 Swifty
模块只是一个简单的结构
// MyStruct.swift
public struct MyStruct {
public var text = "Hello, World!"
public init() {
}
}
并且在 Objc-cli
中,我尝试 link 像这样的 swift 模块。
// main.m
#import <Foundation/Foundation.h>
@import Swifty <---- Not found
int main() {
NSLog(@"Hello from Objc");
return 0;
}
这是 Package.swift
的样子:
// Package.swift
import PackageDescription
let package = Package(
name: "MyTest",
targets: [
Target(name: "Swifty", dependencies: []),
Target(name: "Objc-cli", dependencies: ["Swifty"]),
]
)
遗憾的是,编译器无法识别 objective-c 模块中的 Swifty
模块。这是输出:
$ swift build
Compile Swift Module 'Swifty' (1 sources)
Compile Objc-cli main.m
/tmp/TestPackage/Sources/Objc-cli/main.m:10:9: fatal error: module 'Swifty' not found
@import Swifty
~~~~~~~^~~~~~
1 error generated.
<unknown>:0: error: build had 1 command failures
我是不是错过了什么,或者现在根本不可能?
现在无法在 C 模块中导入 Swift 模块,只能换一种方式,将 C 导入 Swift。
您可以在 Swift 下午找到详细信息 - C language targets
这里是根目录的例子
├── Package.swift
└── Sources
├── Objc-cli
│ └── main.m
└── Swifty
└── MyStruct.swift
其中 Swifty
模块只是一个简单的结构
// MyStruct.swift
public struct MyStruct {
public var text = "Hello, World!"
public init() {
}
}
并且在 Objc-cli
中,我尝试 link 像这样的 swift 模块。
// main.m
#import <Foundation/Foundation.h>
@import Swifty <---- Not found
int main() {
NSLog(@"Hello from Objc");
return 0;
}
这是 Package.swift
的样子:
// Package.swift
import PackageDescription
let package = Package(
name: "MyTest",
targets: [
Target(name: "Swifty", dependencies: []),
Target(name: "Objc-cli", dependencies: ["Swifty"]),
]
)
遗憾的是,编译器无法识别 objective-c 模块中的 Swifty
模块。这是输出:
$ swift build
Compile Swift Module 'Swifty' (1 sources)
Compile Objc-cli main.m
/tmp/TestPackage/Sources/Objc-cli/main.m:10:9: fatal error: module 'Swifty' not found
@import Swifty
~~~~~~~^~~~~~
1 error generated.
<unknown>:0: error: build had 1 command failures
我是不是错过了什么,或者现在根本不可能?
现在无法在 C 模块中导入 Swift 模块,只能换一种方式,将 C 导入 Swift。
您可以在 Swift 下午找到详细信息 - C language targets