Компиляция 32-битной программы на VS 2008 - PullRequest
0 голосов
/ 18 января 2011

Я занимался разработкой на VC ++ 2003 на ПК с XP, но сейчас на Windows 7 и купил дешевую легальную копию VS 2008, чтобы продолжить работу над тем же проектом. Мой продукт должен продолжать работать на клиентских системах XP, поэтому я очень заинтересован в 32-битном исполняемом файле.

Первой проблемой, с которой я столкнулся, была ошибка PRJ0003 "spawning cl.exe". Мне пришлось добавить путь к этому файлу в настройках каталогов VC ++ (он отображается в каталогах bin \ amd64 и bin \ x86_amd64, но я не думаю, что это имеет значение для вывода, который я использую?).

Проблема, с которой я столкнулся (не считая утомительной очистки для преобразования strcpy в strcpy_s и т. Д.), Заключается в том, что мне не ясно, генерирую ли я из этого 32-битную или 64-битную версию. В свойствах моего проекта задано целевое значение «Win32», поэтому я предполагаю, что все хорошо. Это правильно?

Я читал некоторые дискуссии по этому поводу, но никогда не ясно, говорят ли они о том, работает ли сам компилятор x64 против x86, или скомпилированный код x64 против x86, и как это дифференцируется.

Так что я делаю правильно, чтобы сгенерировать 32-битную программу Win32, x-86?

Ответы [ 2 ]

0 голосов
/ 18 января 2011

Предполагая, что у вас нет полностью испорченной установки, тогда в VS2008 очень сложно случайно создать 64-битные исполняемые файлы с 32-битной платформой проекта (я пытался заставить это сделать это для себя причины, и это всегда, кажется, запутаться на этапе ссылки). Однако, если ваш проект использует Makefiles, гораздо проще получить неправильную 32/64 битность, особенно если вы строите из командной строки. Как правило, если вы не настроили 64-битный проект, тогда все должно быть просто 32-битным.

Учитывая, что похоже, что пути компилятора перепутаны, я бы предложил сделать восстановление VS2008, а затем сделать Сервис -> Импорт и экспорт настроек -> Сбросить все настройки. Затем проверьте чистое дерево исходных текстов, чтобы убедиться, что у вас нет некорректных артефактов сборки.

Что касается исправления strcpy_s, имейте в виду, что компилятор выдает вам предупреждение, а не ошибку. Если вы не хотите, чтобы вас об этом предупреждали, просто установите _CRT_SECURE_NO_WARNINGS в качестве макроса препроцессора.

0 голосов
/ 18 января 2011

bin \ amd64 - 64-битный компилятор для AMD64;bin \ x86_amd64 - кросс-компилятор x86 для AMD64.Если вам нужен 32-битный исполняемый файл, стандартный болотный компилятор находится в обычном старом бине.Прошло много времени с тех пор, как я использовал VS2008, но если ваша цель - Win32, я думаю, что он должен использовать стандартный 32-битный компилятор, а не 64-битный или кросс-компилятор.и убедитесь, что взяли Dependency Walker и откройте в нем свой исполняемый файл.Если на иконке модуля в дереве модулей есть вертикальная «64», значит, вы создали 64-битный исполняемый файл;если есть только значок простого модуля, значит, он 32-разрядный, и все хорошо.

...