Qt для wasm: ошибка: использование необъявленного идентификатора 'QThreadPool' - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь собрать свое настольное приложение Qt для веб-сборки и столкнулся с проблемой с потоками.

Когда я использую QThreadPool, я получаю "использование необъявленного идентификатора 'QThreadPool'" сообщение об ошибке. Когда я использую QThread, сообщений об ошибках нет, но поток не запускается при вызове start().

Как мне скомпилировать приложение Qt с потоками для веб-сборки?

1 Ответ

0 голосов
/ 06 июля 2018

Я не уверен, как именно вы сейчас это компилируете, но, возможно, было бы неплохо обновить ваш ответ, чтобы точно показать, какая версия вашего QT и ваши настройки компиляции.

Мне кажется, что многие функции QT еще не поддерживаются в WASM, и это ожидается! Похоже, они все еще переносят большую часть функциональности в Интернет, и это может занять некоторое время.

Если вы проверите QTBUG-64700 , вы увидите, что поддержка потоков еще не доступна для WASM (см. Проблему pthread QTBUG-64625 ). текущий план разработки WebAssembly предполагает, что пройдет несколько месяцев, прежде чем будут реализованы потоки, подобные Pthread.

Для получения дополнительной информации о статусе QT для WASM я бы прочитал их сообщение в блоге , где также указаны неподдерживаемые в данный момент функции и показаны некоторые примеры работающих в данный момент. Или см. Ниже краткий обзор текущих основных проблем.

Вещи, которые не работают QTBUG-63917 (по состоянию на 2018/05/22)

Многопоточность QTBUG-64700

  • есть заглушка QThread
  • отключено в браузерах из-за уязвимости Spectre

Most QNetwork QTBUG-63920

  • нет запросов DNS из-за песочницы javascript
  • должны работать простые запросы 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


Я уверен, что скоро появятся новые обновления и улучшения, но, похоже, вам придется подождать!

...