4

ルート ディレクトリの例を次に示します。

├── 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私はこのように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"]),
    ]
)

Swifty残念ながら、コンパイラはObjective-C モジュール内のモジュールを認識しません。出力は次のとおりです。

$ 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

私は何かを逃したのですか、それとも今のところ単に不可能ですか?

4

1 に答える 1

0

現在、Swift モジュールを C モジュールにインポートすることはできません。C を Swift にインポートするという別の方法でのみ機能します。

詳細については、SwiftPM - C 言語ターゲットを参照してください。

于 2016-12-15T08:05:32.267 に答える