vs2010 не может запустить файл в скомпилированном режиме, но работает правильно в режиме отладки - PullRequest
1 голос
/ 24 марта 2011

Недавно я пишу программу с использованием Qt в Visual Studio 2010. Я правильно настроил свои параметры Qt, потому что раньше я успешно запускал эту программу. Но теперь я не могу запустить программу в скомпилированном режиме (вне IDE), но она работает правильно в режиме отладки.

Моя операционная система - Windows 7, и я использую Qt 4.7

PS. Он не говорит отсутствующие DLL, просто молча вылетает ....

Ответы [ 4 ]

0 голосов
/ 28 марта 2011

Если вы впервые пытаетесь запустить что-либо, что вы создали в VS, в режиме выпуска на вашем компьютере, то обычно это проблема отсутствия установленных библиотек времени выполнения VS. Установка VS не устанавливает свои собственные библиотеки времени выполнения в систему. Хотя запуск внутри IDE будет работать с версиями отладки и выпуска, запуск вне IDE не будет работать. Это огромная PITA, найдите правильную версию vcredist. Это где-то в дереве Visual Studio (не могу вспомнить, где) установить его и двигаться дальше.

Вы можете увидеть, установлена ​​ли какая-либо версия vcredist в диалоговом окне настроек «Установка и удаление программ», но всегда сложно выяснить, является ли установленная версия верной

0 голосов
/ 24 марта 2011

Может быть, ваш код зависит от некоторых файлов, хранящихся в папке приложения, и эти файлы отсутствуют в папке выпуска?

Или, может быть, в вашей системе установлено много версий Qt, и та, которая используется в VS, отличается от той, которая видна приложению?

0 голосов
/ 25 марта 2011

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

Отредактировано, чтобы добавить: Другая возможность состоит в том, что вы нарушаете какое-то правило сглаживания или что-то еще, что не приносит никакого вреда, если ваш код не оптимизирован.Снова попробуйте включить оптимизацию в вашей отладочной сборке.(Кроме того, пошаговое выполнение полностью оптимизированного кода может быть сюрреалистичным.)

0 голосов
/ 24 марта 2011

Если он выполняется в режиме выпуска, но падает, это может не иметь никакого отношения к Qt.

Возможности - у вас есть различные среды, установленные в режимах отладки / выпуска. Вы запускаете это из командной строки в каталогах Debug \ Release или из ctrl-f5 внутри MSVC? Таким образом, одна версия может найти неправильный набор DLL, возможно, более раннюю версию?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...