Я пытаюсь добавить собственный код C ++ в модуль Objective-C. Это отлично работает. Далее я пытаюсь использовать этот модуль из Swift, но я не могу использовать класс Objective-C из кода Swift. Я попытался создать два отдельных модуля или один модуль с двумя целями - та же ошибка " Использование неразрешенного идентификатора 'Bridge' ", а также предупреждение о том, что зонтичный каталог ../Objective-Code / include не найден.
Я думаю, что заголовок моста между Objective-C и Swift отсутствует. В среде смешанного кода этот заголовок генерируется автоматически, но не в управлении пакетами.
Чего не хватает или в чем моя вина? Я приложил небольшой пример своей проблемы.
"Package.swift" Описание пакета.
// swift-tools-version:5.1
import PackageDescription
let package = Package(
name: "MixedExample",
products: [
.library(
name: "MixedExample",
targets: ["SwiftCode", "Objective-CCode"]),
],
dependencies: [
],
targets: [
.target(name: "SwiftCode", dependencies: ["Objective-CCode"]),
.target(name: "Objective-CCode", dependencies: []),
]
)
Модуль "Objective-CCode" с кодом Objektive-C: "Bridge.h"
#include <Foundation/Foundation.h>
@interface Bridge : NSObject
-(void) printHello;
@end
"Bridge.m"
#include "Bridge.h"
@implementation Bridge : NSObject
-(void)printHello {
fprintf(stdout, "Hello from ExampleBridge\n");
}
@end
Модуль "SwiftCode" с кодом Swift
import Foundation
import Objective_CCode
class Examples {
let e = Bridge() // compiler error here
func printH() {
e.printHello()
}
}