Linux中的Swift:使用未解析的标识符’dispatch_async’

我编译了libdispatch.
这段代码有效:

import Dispatch
var lockQueue = dispatch_queue_create("com.test.async",nil);

但是如果我把这段代码放到结束文件中:

dispatch_async(lockQueue) {
    print("test1");
}

我收到一个错误:

use of unresolved identifier ‘dispatch_async’

最佳答案
正如我在上面评论的那样,它似乎是a current limitation with the Swift Package Manager.它目前不支持添加适当的编译时选项,例如支持块作为GCD函数输入所需的选项(-Xcc -fblocks).

在此期间,您可以避免使用Swift包管理器并使用swiftc直接编译文件,并使用适当的选项.谢夫勒在their test repository提供了一个例子:

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提供模块映射,因此请调整它们以匹配实际放置这些系统模块目录的位置.

相关文章

文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限...
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Wi...
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Lin...
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,...
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 Open...