Ошибка времени выполнения при выполнении exe вручную
У меня есть приложение Qt, которое прекрасно работает, когда я запускаю его из Qt Creator. Однако, запустив его вручную, щелкнув сгенерированный exe, я получаю следующую ошибку:
Я бы понял, если бы он попросил недостающие DDL (которые я мог бы затем поместить в ту же папку). Но как мне поступить с этим (в общем)?
PS Это не дает никакого номера строки в моем исходном коде, который я мог бы попробовать проверить это утверждение. Я тоже пытался использовать режим релиза, но та же ошибка.
2 ответа
Мои qml-файлы не были развернуты должным образом и, следовательно, эта ошибка (это утверждение, вероятно, находится в переменной, хранящей имя основного qml-файла, т.е. это не должна быть пустая строка, как в случае отсутствия main.qml). Размещение файлов qml по правильным путям решило проблему.
Также, как указал @mitch в своем ответе, используйте windeployqt, чтобы выяснить зависимости. Хотя я также понял, что он не охватывает все зависимости (например, время выполнения MSVC и другие файлы, связанные с компилятором). В этом случае запустите средство обхода зависимостей и поместите отсутствующие файлы вручную вместе с исполняемым файлом.
Мы не знаем, в чем проблема с вашим кодом; Вы должны будете использовать отладчик, чтобы выяснить это. Я думаю, что предварительно скомпилированные библиотеки Qt, которые вы загружаете, поставляются с символами отладки, но если они этого не делают, вы всегда можете собрать Qt самостоятельно, чтобы получить их, используя -force-debug-info
настроить вариант.
Вы также можете использовать DebugView для просмотра результатов отладки развернутых приложений.
Тем не менее, в общем, вы должны использовать windeployqt
инструмент, который включен в Qt.
Страница Qt for Windows - Deployment содержит больше информации о развертывании приложений Qt на компьютерах с Windows, но windeployqt
должен делать все что нужно.