Программа, скомпилированная с MSVC 9, не запускается на ванильной SP3 XP - PullRequest
1 голос
/ 15 марта 2010

Я установил XP на виртуальную машину, обновил ее до SP3, а затем протестировал небольшую программу, скомпилированную с Visual C ++ 2008, на моем реальном компьютере - однако он не запустился, а вывел только ошибку, сообщающую, что обнаружена проблема что переустановка приложения (у меня размером 10 КБ и даже без установки) может решить проблему.

  • Что требуется для запуска программ, скомпилированных с MSVC 9?
  • Могу ли я просто включить несколько библиотек dll, чтобы он работал везде?

Ответы [ 5 ]

4 голосов
/ 15 марта 2010

Либо свяжитесь с библиотекой времени выполнения (выберите multithreaded вместо multithreaded-dll), либо следуйте совету tommieb75 и установите распространяемый файл MSVC9, распространяемый (копирование в system32 или в папку приложения также работает, но это не путь, афаик). Для небольших приложений без необходимости установки, я бы предпочел первый вариант. Развертывание инсталляторов времени выполнения раздражает .

2 голосов
/ 15 марта 2010

Возможно, вам не хватает библиотеки времени выполнения MCVC9, попробуйте скопировать ее в папку Windows System32 ...

0 голосов
/ 15 марта 2010

Это может быть dll, на которую ссылаются ваши приложения. Инструмент зависит от , который должен присутствовать в каждом наборе инструментов для отладки проблем с зависимостями DLL.

Если у вас есть коммерческая версия, а не экспресс-версия msvc, вам действительно нужно скопировать компоненты перенаправления msvcmon на свою виртуальную машину, запустить там удаленный монитор отладки и подключить его из среды рабочего стола. Эта страница объясняет основной принцип. Потому что, похоже, ваше приложение вызывает исключение в XP.

Если вы не можете выполнить удаленную отладку и если средство проверки зависимостей не указывает на проблему с DLL, то вы можете заглянуть в журнал событий системного приложения, чтобы узнать, есть ли там какая-либо дополнительная информация. Или попробуйте установить Dr Watson как отладчик после смерти. Откройте командную строку и введите

drwtsn32 -i

для установки д-ра Уотсона в качестве посмертного отладчика и

drwtsn32

чтобы получить экран конфигурации, позволяющий вам искать расположение аварийных дампов. Вы можете загрузить файлы аварийного дампа напрямую с помощью Dev Studio 2005 и более поздних версий. (Я не думаю, что доктор Ватсон больше поставляется с Vista и Windows 7).

0 голосов
/ 15 марта 2010

Что содержится в вашей программе? Зависимости от динамическая среда выполнения C / C ++ ? Затем вам нужно включить распространяемые библиотеки DLL времени выполнения C ++ в ваше приложение или изменить программу на использование статической среды выполнения C ++. Точно так же вы используете ATL? MFC? Кастомные сторонние библиотеки? Все они добавляют зависимости к вашему исполняемому файлу, и Win32 откажется загружать ваше приложение.

Один простой шаг - проверить с помощью Dependency Walker , какие зависимости есть у вашего приложения.

0 голосов
/ 15 марта 2010

Это может зависеть от того, с какими DLL связан ваш проект. Проверьте манифест сборок и проверьте, установлены ли эти библиотеки DLL на вашей виртуальной машине.

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