Что из-за настроек проекта VS2010 C exes требуют режима совместимости

Я уже несколько месяцев запускаю и компилирую программу на своем 64-битном компьютере с Windows 7, но недавно мне пришлось изменить несколько настроек проекта VC для используемых статических библиотек, и теперь сгенерированный исполняемый файл требует от меня его запуска в «режиме совместимости с Windows XP».

  • Скомпилировано на 64-битной машине Windows7 с Visual Studio 2010 SP1
  • Программа, которую я генерирую, собирается в Win32, режим отладки.
  • Статические проекты lib указывают Target Machine / X86.
  • Когда я запускаю программу из отладчика, она запускается и работает, однако, если она запускается через значок Windows, требуется режим совместимости с XP.
    • При попытке запуска вне отладчика, EXE-файл появляется в диспетчере задач на секунду, а затем исчезает.
  • Я пытался использовать Microsoft Application Verifier, но я не знаю, что искать в выводе.

Мне не удалось найти какие-либо подробности о том, как устранить эту проблему, поэтому, если у кого-то есть какие-либо способы найти причину этого недавнего требования режима совместимости, я бы хотел узнать, как оно было исправлено.

У меня есть исходные тексты / проекты / решения для большинства статических библиотек, с которыми я ссылаюсь, а также сгенерированный exe-файл, однако для некоторых внешних зависимостей у меня есть только файлы .lib, .dll и .h. Это означает, что я могу изменить (большинство) настроек проекта для зависимостей, если это необходимо, но мне нужно знать, какие из них искать.

Спасибо

6

Решение

Если честно, не бойтесь сделать еще один проект и скопировать файлы кода, даже если это 5 проектов. Вы должны сократить проблему пополам. Если он работает с новыми проектами, то это файлы проекта, если нет, то это код. Делать проекты не так уж и сложно, хотя я уверен, что это источник большого ужаса и того, чего люди избегают. Если это проекты, вы можете просмотреть файлы и посмотреть, что произошло в процессе устранения. Если вы действительно обеспокоены, скопируйте все решение в другую папку; всегда делайте резервные копии.

Проблема в том, что вы, вероятно, не сможете собрать достаточно информации для нас, чтобы получить значимый ответ, если вам не повезет, и все ответы будут сняты в темноте.

Так что я собираюсь принять этот вопрос как «это случается, что я могу с этим поделать». Приведенная выше стратегия поможет вам избежать этого, если раньше это работало. Это упражнение вооружит вас на будущее и будет более продуктивным в долгосрочной перспективе. Посмотрите UAC и файлы манифеста, иначе Vista + разница, которая резко меняет поведение загрузки и запуска (Команды компоновщика, Руководство по миграции Vista) если вам нужно что-то посмотреть, но попробуйте описанный выше процесс.

—-

Другие общие вещи, чтобы попробовать:

1) другая машина

2) еще одна установка VS

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

4) установка сообщений по пути кода с различными сообщениями, чтобы вы знали, где это происходит.

5) Тьюринг на pdb в релизе и runnign вне отладчика. Если выпадет, то попробуйте отладку и посмотрите, все ли еще выпадет, но вы увидите, где.

6) предположим, что ваш код нестабилен и вам повезло, когда он работал. (это не весело). Много раз вещи работают в отладке, а не в выпуске из-за отличия макета памяти. Если ваша программа большая, вы можете найти креативные способы использования # if, чтобы исключить запуск кода во время загрузки всего приложения. Вы можете найти код, который вызывает плохое поведение.

7) выключите UAC и сообщайте об ошибках, если он включен, смотрите, если изменения.

8) найдите в меню Visual Studio кнопку «запустить без отладки», чтобы вам не пришлось запускать ее со значком. Это случайность, которая должна произойти, и устраняет еще одно экологическое различие. Это похоже на кнопку запуска с отладкой, но это полый, простой зеленый треугольник. Это под набором меню отладки. Мое мнение состоит в том, что это принесло больше вреда, чем пользы, потому что по умолчанию этого не было на панели, так как многие смущались, думая, что запуск с VS означает всегда использовать отладчик.

и так далее….

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]