32-битное приложение Qt на win 7 x64 не запускается, но отлично работает с Qt Creator?

Моя коробка разработки - Windows 7 x64. У меня есть как 32-битная, так и 64-битная версии Qt 4.7.4, встроенные в мою коробку. Когда я настраиваю свое приложение для использования 32-разрядной версии Qt, оно отлично работает в Qt Creator (ctrl-R), но когда я пытаюсь дважды щелкнуть исполняемый файл в проводнике Windows (или запустить из командной строки), я получаю :

---------------------------
RenameTemplatePreviewFiles_Qt_win.exe - Application Error
---------------------------
The application was unable to start correctly (0xc000007b). 
Click OK to close the application. 
---------------------------
OK   
---------------------------

Если я переключу свою конфигурацию на 64-битный Qt и соберу ее, я могу дважды щелкнуть исполняемый файл, и он будет работать нормально.

Что мне нужно сделать, чтобы иметь возможность запускать exe-файл, скомпилированный с 32-битной Qt?


person David Burson    schedule 23.08.2012    source источник
comment
Вы связываетесь динамически или статически с Qt?   -  person Patrice Bernassola    schedule 24.08.2012
comment
Я не уверен - как я могу сказать?   -  person David Burson    schedule 24.08.2012
comment
Если вы используете конфигурацию по умолчанию, поэтому вы динамически компонуете Qt (проверьте команду компоновщика, чтобы быть уверенным). Если связывание динамическое, приложение будет искать Qt dll рядом с приложением, а затем в PATH. Если ссылка является статической, Qt встроен в ваше приложение. В вашем случае я предполагаю, что это динамическая и 32-битная dll Qt отсутствует в PATH. Попробуйте скопировать QtCore4.dll в папку приложения и обратитесь к ответу Барта, чтобы найти все зависимости Qt.   -  person Patrice Bernassola    schedule 24.08.2012


Ответы (4)


Мое несколько обоснованное предположение состоит в том, что ваше приложение может просто не найти требуемые библиотеки DLL. Чтобы быть уверенным, вы можете открыть исполняемый файл в Dependency Walker и посмотреть, найдет ли он все необходимые библиотеки DLL. Если поначалу все кажется не так, используйте Dependency Walker для профилирования приложения. Это может выявить некоторые отсутствующие зависимости, загруженные во время выполнения.

Если это относится к вашим библиотекам Qt DLL, убедитесь, что в переменной среды PATH есть соответствующая запись, или что необходимые библиотеки DLL включены в каталог вашего EXE (хотя последнее может быть не лучшим выбором на машине разработки).

person Bart    schedule 23.08.2012
comment
да, на моем пути только x64-версия Qt. Тем не менее, версия Qt для x86 находится на моем пути, если я смотрю в Qt Creator - Projects, Build Settings, Build Environment. Для него установлено значение «Использовать системную среду», но, по-видимому, он автоматически добавляет в путь x86-версию Qt. - person David Burson; 27.08.2012
comment
@DavidBurson Да, скорее всего, это было так. Рад видеть, что это решено. - person Bart; 27.08.2012

Я столкнулся с той же проблемой. Сначала я скопировал необходимые файлы .dll в папку выпуска, где находится мой файл .exe. Затем я скопировал лишний файл libstdc++-6.dll. После этого программа заработала.

person Indrajeet Hujare    schedule 24.05.2019
comment
Большое спасибо, вы меня спасли! - person Amin Guermazi; 10.04.2020

Просто добавьте три недостающих DLL-файла:

  • libwinpthread-1.dll
  • libstdС++-6.dll
  • libgcc_s_dw2-1.dll

в папку appl.exe . Для моей системы это будет каталог C:\Users\H\Documents\build-AQtest01v4-Desktop_Qt_5_11_0_MSVC2017_64bit-Debug. Копирование этих библиотек должно заставить ваше приложение работать. В моей системе эти DLL можно найти в C:\Qt\Tools\mingw492_32\bin.

person J doe    schedule 14.04.2018

Я столкнулся с той же проблемой и хотел бы поделиться своим решением.

Когда я попытался развернуть 32-разрядную версию, запуск windeployqt.exe скопировал неправильные файлы для 32-разрядного исполняемого файла, поскольку PATH был установлен на 64-разрядную папку bin (D:\Qt\Qt5.14.2\5.14.2). \msvc2017_64\bin).

Когда я установил PATH в 32-битную папку (D:\Qt\Qt5.14.2\5.14.2\msvc2017\bin) и снова запустил windeployqt.exe, правильные файлы были скопированы для развертывания, и все заработало.

Гэри

person Gary    schedule 27.11.2020