Qt for wasm:错误:使用未声明的标识符'QThreadPool'

时间:2018-07-06 07:45:04

标签: c++ qt webassembly

我正在尝试为Web Assembly构建桌面Qt应用程序,但是遇到了线程问题。

当我使用QThreadPool时,出现“使用未声明的标识符'QThreadPool'” 的错误消息。当我使用QThread时,没有错误消息,但是调用start()时线程没有启动。

如何为Web Assembly编译带有线程的Qt应用程序?

1 个答案:

答案 0 :(得分:1)

我不确定您现在的编译方式如何,但是最好更新您的答案以确切显示您的QT版本和编译设置。

在我看来,WASM尚不支持QT的许多功能,这是可以预期的!看来他们仍在将大多数功能移植到Web上,这可能需要一些时间。

如果选中QTBUG-64700,将会看到WASM尚不支持线程支持(请参阅pthread问题QTBUG-64625)。 current WebAssembly design plan建议距离实现类似Pthread的线程还需要几个月的时间。

有关WASM的QT状态的更多信息,请查看their blog post,其中还说明了当前未使用的功能,并显示了一些当前可用功能的示例。或者,请参见下面的有关当前主要问题的快速摘要。

不起作用的事情QTBUG-63917(截至2018/05/22)

多线程QTBUG-64700

  • 有一个存根QThread
  • 由于Spectre漏洞在浏览器中被禁用

大多数QNetwork QTBUG-63920

  • 由于使用了JavaScript沙箱,因此没有DNS查找
  • 简单的QNAM请求应该可以工作。

本地文件系统访问QTBUG-67834

持久的QSettings,它相当慢且异步地QTBUG-63923

同步配置

QOpenGLWIdget QTBUG-66944

Opengl仅在全屏QTBUG-67717上可用

一些着色器QTBUG-67338

  • QResource无法找到Qt内置的着色器

exec循环的功能不像其他平台QTBUG-64020

  • exec()事件循环将不会返回您期望的位置
  • 从模态对话框返回值是行不通的,但是可以通过使用非模态信号和show()来解决。尽管模式对话框/窗口仍将打开。

toUpperCase QTBUG-66621

QClipboard QTBUG-64638


我相信很快就会有更多的更新和改进,但是看来您将不得不等待!