Я уже несколько месяцев запускаю и компилирую программу на своем 64-битном компьютере с Windows 7, но недавно мне пришлось изменить несколько настроек проекта VC для используемых статических библиотек, и теперь сгенерированный исполняемый файл требует от меня его запуска в «режиме совместимости с Windows XP».
Мне не удалось найти какие-либо подробности о том, как устранить эту проблему, поэтому, если у кого-то есть какие-либо способы найти причину этого недавнего требования режима совместимости, я бы хотел узнать, как оно было исправлено.
У меня есть исходные тексты / проекты / решения для большинства статических библиотек, с которыми я ссылаюсь, а также сгенерированный exe-файл, однако для некоторых внешних зависимостей у меня есть только файлы .lib, .dll и .h. Это означает, что я могу изменить (большинство) настроек проекта для зависимостей, если это необходимо, но мне нужно знать, какие из них искать.
Спасибо
Если честно, не бойтесь сделать еще один проект и скопировать файлы кода, даже если это 5 проектов. Вы должны сократить проблему пополам. Если он работает с новыми проектами, то это файлы проекта, если нет, то это код. Делать проекты не так уж и сложно, хотя я уверен, что это источник большого ужаса и того, чего люди избегают. Если это проекты, вы можете просмотреть файлы и посмотреть, что произошло в процессе устранения. Если вы действительно обеспокоены, скопируйте все решение в другую папку; всегда делайте резервные копии.
Проблема в том, что вы, вероятно, не сможете собрать достаточно информации для нас, чтобы получить значимый ответ, если вам не повезет, и все ответы будут сняты в темноте.
Так что я собираюсь принять этот вопрос как «это случается, что я могу с этим поделать». Приведенная выше стратегия поможет вам избежать этого, если раньше это работало. Это упражнение вооружит вас на будущее и будет более продуктивным в долгосрочной перспективе. Посмотрите UAC и файлы манифеста, иначе Vista + разница, которая резко меняет поведение загрузки и запуска (Команды компоновщика, Руководство по миграции Vista) если вам нужно что-то посмотреть, но попробуйте описанный выше процесс.
Другие общие вещи, чтобы попробовать:
1) другая машина
2) еще одна установка VS
3) простой проект с одним окном, который ничего не делает, чтобы доказать все остальное в вашей цепочке инструментов и среде, в порядке.
4) установка сообщений по пути кода с различными сообщениями, чтобы вы знали, где это происходит.
5) Тьюринг на pdb в релизе и runnign вне отладчика. Если выпадет, то попробуйте отладку и посмотрите, все ли еще выпадет, но вы увидите, где.
6) предположим, что ваш код нестабилен и вам повезло, когда он работал. (это не весело). Много раз вещи работают в отладке, а не в выпуске из-за отличия макета памяти. Если ваша программа большая, вы можете найти креативные способы использования # if, чтобы исключить запуск кода во время загрузки всего приложения. Вы можете найти код, который вызывает плохое поведение.
7) выключите UAC и сообщайте об ошибках, если он включен, смотрите, если изменения.
8) найдите в меню Visual Studio кнопку «запустить без отладки», чтобы вам не пришлось запускать ее со значком. Это случайность, которая должна произойти, и устраняет еще одно экологическое различие. Это похоже на кнопку запуска с отладкой, но это полый, простой зеленый треугольник. Это под набором меню отладки. Мое мнение состоит в том, что это принесло больше вреда, чем пользы, потому что по умолчанию этого не было на панели, так как многие смущались, думая, что запуск с VS означает всегда использовать отладчик.
и так далее….
Других решений пока нет …