Компиляция 32-битного приложения с использованием Visual Studio на 64-битной машине - PullRequest
5 голосов
/ 11 августа 2011

Я пытаюсь скомпилировать простое 32-битное приложение Hello World, написанное на C, с использованием Visual Studio 2010 на 64-битной машине при новой установке Windows 7. Я также установил «Windows SDK для Windows 7 и .NET Framework 4» после установки Visual Studio. Я построил приложение, выбрав «Win32» в качестве платформы. Он работает в Windows 7, но если я запускаю приложение на своем 32-разрядном компьютере с Windows XP Professional (новая установка также и без программ и пакетов обновления), кажется, что эта ошибка не работает:

"This application has failed to start because msvcr100.dll was not found"

Если это может быть полезно, Dependency Walker обнаруживает 2 ошибки (подробности см. На связанном изображении):

"Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module."
"Error: Modules with different CPU types were found."

http://img820.imageshack.us/img820/4725/errordp.png (статья)

Как я могу решить это? Спасибо!

Ответы [ 4 ]

3 голосов
/ 11 августа 2011

Машине, на которой он запущен, нужны библиотеки времени выполнения.См. Информация MSDN .

2 голосов
/ 11 августа 2011

Не доверяйте Dependency Walker в этом ... Это ясно показывает, что ваш exe 32-битный.Ваша проблема с распространяемыми VC, которые являются DLL-библиотеками CRT - ищите vcredist_x86.exe в вашей установке VS.Вы должны запустить его до запуска приложения.

Другой вариант - статически связать ЭЛТ.См. Параметр / MT .Сделает ваш exe больше, но сохранит материал vcredist.

2 голосов
/ 11 августа 2011

Проблема здесь в том, что среда выполнения C, используемая скомпилированной программой, отсутствует на компьютере с Windows XP.Visual Studio 2010 по умолчанию использует среду выполнения 10.0 (msvcr100.dll), которая по умолчанию недоступна в XP.Вам нужно вручную развернуть среду выполнения C на вашем компьютере, чтобы ваша программа могла работать.

Возможно, вы захотите прочитать следующую статью MSDN, в которой обсуждаются проблемы развертывания приложений C, созданных с помощью Visual Studio 2010

Таммогут быть дополнительные 32/64 проблемы на работе, но это, кажется, основная проблема

1 голос
/ 11 августа 2011

Ответы о библиотеке времени выполнения правильные.Другим возможным решением является ссылка на статические библиотеки времени выполнения, а не на версии DLL.Таким образом, вы можете создать исполняемый файл, который вы можете перенести на любой компьютер без лишних хлопот развертывания.

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

...