:
dispatch_async(lockQueue) {
print("test1");
}
を、私はエラーを得ましたa current limitation with the Swift Package Managerとなります。 GCD関数への入力としてブロックをサポートするために必要なもの(-Xcc -fblocks
)など、適切なコンパイル時オプションの追加は現在サポートされていません。
その間、Swift Package Managerを避け、swiftcを使用してファイルを適切なオプションで直接コンパイルできます。例はtheir test repositoryにshefflerによって提供されています
swiftc -v -o gcd4 Sources/main.swift -I .build/debug -j8 -Onone -g -Xcc -fblocks -Xcc -F-module-map=Packages/CDispatch-1.0.0/module.modulemap -I Packages/CDispatch-1.0.0 -I /usr/local/include
-I
オプションはlibdispatchのためのあなたのモジュールのマップに引っ張るので、あなたが実際にこれらのシステムモジュールのディレクトリを配置した場所と一致するように、これらを調整します。
libdispatchをSwiftにプルするために使用しているモジュールマップは何ですか?パッケージマネージャを使用していますか? –
私は公式のモジュールを使用しています:https://github.com/apple/swift-corelibs-libdispatchはい、最初のコードブロックが動作しています。 'import Dispatch'と' dispatch_queue_create'が動作します。 – zig1375
この問題はhttps://bugs.swift.org/browse/SR-397と関連しています。必要なブロックが見つからないlibdispatch関数が呼び出されます。 Swift Package Managerは、これを動作させるためのモジュール用のカスタムコンパイラフラグをサポートできる必要があるようです。 –