Qt5 - MinGW64 - точка входа qResourceFeatureZlib () не найдена - PullRequest
0 голосов
/ 01 апреля 2020

моя программа (GUI) прекрасно собирается / работает на Debian GNU / Linux, но мне не удается запустить ее на Win10 / MinGW64. Я могу построить его нормально, но когда я его запускаю, сообщение об ошибке (в системном диалоговом окне Win10) заключается в том, что точка входа (искаженное имя, которое я c ++ фильтрует) qResourceFeatureZlib () не найдена в моей исполняемой программе .

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

Звучит ли это как-нибудь на бобе?

Заранее большое спасибо,

Филиппо

Я использую стек разработки на Win10: MSYS2 (64 бита) / MinGW64 с использованием CMake в качестве системы сборки.

1 Ответ

0 голосов
/ 03 апреля 2020

Похоже, вам не хватает переключателя WIN32 на вашем add_executable().

При Windows графические приложения (но не консольные приложения) заменяют точку входа (первая вызываемая функция) вашего приложения (обычно ваша main() функция) с другой функцией (WinMain()), которая содержит установочный код и сама вызовет ваш main().

Подробнее о переключателе WIN32 в cmake документация .

Редактировать: Если вам интересно, почему точка входа, которая не была найдена, называется qResourceFeatureZlib() вместо WinMain(): система ресурсов Qt позволяет вам (описывая это очень в упрощенном виде), чтобы добавить zip-файл, содержащий любые файлы, которые вы хотите, в ваш исполняемый файл и использовать их, как если бы они находились где-то в папке с вашим исполняемым файлом. Чтобы сделать это прозрачно, Qt перехватывает точку входа вашей программы, извлекает zip-файл и затем вызывает main() или WinMain().

...