Компилировать и связывать 32-битную программу из Visual Studio 2008 - PullRequest
1 голос
/ 18 января 2011

Я задал тот же самый базовый вопрос вчера, но не получил достаточно далеко, чтобы получить четкое представление о проблеме. По сути, это ошибка, которую я сейчас получаю при создании приложения:

. \ Debug \ HotSync.obj: фатальная ошибка LNK1112: тип компьютера модуля 'x64' конфликтует с типом машины назначения 'X86'

Я предполагаю, что это означает, что я компилирую 64-битные объектные модули, а затем пытаюсь связать 32-битный исполняемый файл. Так это вопрос самого компилятора или опции, предоставленной компилятору? Этот проект ранее был проектом VC ++ 2003, поэтому всегда был 32-битным.

Я мог бы упомянуть, что единственные версии cl.exe, которые я могу найти, находятся в подкаталогах amd64 и x86-amd64 в VC \ bin. Мне нужно вручную добавить один из этих путей в список «Каталоги VC ++», но результаты одинаковы для обоих.

Мой хостинг-компьютер - AMD под управлением Windows 7 64-bit, но я надеюсь, что я все еще могу создавать программы, которые будут работать на XP. Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

2 голосов
/ 19 января 2011

При установке Visual Studio 2008 по умолчанию необходимо поместить x86 cl.exe и связанные с ним двоичные файлы компилятора в:

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\

в системе Win7 x64.

Если у вас там нет cl.exe (т. Е. «Над» каталогами amd64 или x86_amd64), вы можете рассмотреть возможность переустановки Visual Studio.

Обратите внимание, что компилятор в каталоге amd64 предназначен для систем x64 и сам по себе предназначен для работы в системах x64. Компилятор в каталоге x86_amd64 также предназначен для систем x64, но сам является двоичным файлом x86 (то есть он кросс-компилируется в x64 из 32-разрядной системы x86).

У вас также должен быть ярлык в группе программ Visual Studio 2008 (или как бы это ни называлось в Win7):

"Microsoft Visual Studio 2008" | "Visual Studio Tools" | "Visual Studio 2008 Command Prompt"

, который открывает командное окно, которое первоначально говорит:

Setting environment for using Microsoft Visual Studio 2008 x86 tools.

И запуск команды cl там без параметров должен сказать что-то вроде:

Microsoft (R) 32-разрядный оптимизирующий компилятор C / C ++ версии 15.00.21022.08 для 80x86

Опять же - если ничего из этого нет для вас, вам нужно переустановить.

Кроме того, убедитесь, что конфигурации всех ваших проектов, участвующих в сборке, установлены на Win32, а не на x64.

1 голос
/ 19 января 2011

Очевидно, "проблема" в том, что я установил только C ++, поскольку это все, что я планирую использовать. Но почему-то нужный мне cl.exe устанавливается только как часть установки C #. Так что иди фиггер! Правильно, я пытаюсь сохранить беспорядок, не выполняя полную установку.

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