У меня есть приложение Qt, которое работает в режиме отладки без каких-либо проблем. С двух дней я пытаюсь заставить его работать в режиме Release. После некоторой модификации свойства проекта мне удалось скомпилировать без ошибок. Но, к сожалению, приложение падает до того, как достигнет основного метода. Это моя среда:Приложение Qt вызывает исключение нарушения доступа во время запуска
- MS VS 2010
- Qt 4.8.4
- QWT 6.0.0
Я не знаю, если это уместно, но я также установлен Qt плагин для VS и используется Qt Designer для создания моего графического интерфейса.
Как я уже говорил, в режиме отладки нет проблем. Запуск версии релиза из Visual Studio приводит к следующей ошибке: Необработанное исключение в 0x77c415de в Application.exe: 0xC0000005: местоположение чтения нарушения доступа 0x0000000c.
Последняя функция, которую я могу отлаживать, - это метод «WinMain», который вызывается внутри метода «__declspec (noinline) int __tmainCRTStartup», который находится в crtexe.c (честно говоря, я понятия не имею, что это такое). Счет вызовов выглядит следующим образом:
ntdll.dll!77c415de()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!77c415de()
ntdll.dll!77c3014e()
msvcr100.dll!718f0269()
msvcr100.dll!718f233b()
msvcr100.dll!718f233b()
msvcr100.dll!718f233b()
QtCore4.dll!5b2cfc49()
QtGui4.dll!57bf54ea()
Application.exe!__tmainCRTStartup() Line 547 + 0x1c bytes C
kernel32.dll!754633aa()
ntdll.dll!77c59ef2()
ntdll.dll!77c59ec5()
В тот момент, когда я полностью потерял эту проблему. Не знаю, что попробовать дальше ...
Я попытался уменьшить программу и прокомментировал полную основную функцию. Но результат был тем же самым поведением. Как я уже сказал, ошибка возникает еще до вызова основной функции. Я также отключил всю оптимизацию и перекомпилировал ... ничего не изменил.
Что меня озадачивает, так это то, что он «работает», когда я вызываю «Application.exe» из командной строки (нормально он также сбой, но намного позже во время выполнения). Странно, не так ли? В чем разница между запуском из командной строки и запуском приложения Visual Studio?
Попробуйте использовать http://www.dependencywalker.com/ для анализа зависимостей исполняемого файла. Может быть причиной является смешение времени выполнения. Давайте проверим. – AnatolyS
Также проверьте свою PATH, может быть, есть пути, относящиеся к времени выполнения qt из других версий. – AnatolyS
Спасибо Анатолию за вашу помощь. Я удалил все пути qt из системной переменной PATH. Но никаких изменений. Я также установил зависимого пользователя, но не знаю, как запустить «приложение, запускаемое VS» там. Поэтому я просто открыл Application.exe. В нем говорится, что отсутствуют две библиотеки DLL: GPSVC.dll, IESHIMS.DLL. Не знаю, насколько это актуально. Я буду искать эти библиотеки завтра. Придется остановиться сейчас ... –