ОЧЕНЬ простая программа на C не будет компилироваться с VC 64 - PullRequest
3 голосов
/ 31 марта 2010

Вот очень простая программа на C:

#include <stdio.h>

int main (int argc, char *argv[]) {

    printf("sizeof(short) = %d\n",(int)sizeof(short));
    printf("sizeof(int) = %d\n",(int)sizeof(int));
    printf("sizeof(long) = %d\n",(int)sizeof(long));
    printf("sizeof(long long) = %d\n",(int)sizeof(long long));
    printf("sizeof(float) = %d\n",(int)sizeof(float));
    printf("sizeof(double) = %d\n",(int)sizeof(double));

    return 0;
}

Хотя он прекрасно компилируется на Win32 (командная строка: cl main.c), он не использует компилятор Win64 ("c:\Program Files(x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\cl.exe" main.c). В частности, это говорит об «ошибке LNK2019: неразрешенный внешний символ printf, указанный в функции main». Насколько я понимаю, это не может ссылаться на printf, верно?

Очевидно, что у меня установлен Microsoft Visual C ++ Compiler 2008 (Standard enu) x86 и x64, и я использую 64-разрядную версию Windows (7).

В чем здесь проблема?

UPDATE:
Хорошо, теперь я побежал vcvarsall.bat amd64. Он говорит: «Указанный тип конфигурации отсутствует. Инструменты для этой конфигурации могут быть не установлены.». Как уже упоминалось, компилятор явно установлен ??

Ответы [ 3 ]

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

Что-то не так с вашей настройкой. Он компилируется и ссылка отлично для меня.

D:> cl test.cpp Microsoft (R) C / C ++ Оптимизация версии компилятора 15.00.30729.01 для x64 Copyright (C) Microsoft Corporation. Все права зарезервирован.

test.cpp Microsoft (R) Инкрементный Linker Version 9.00.30729.01 Авторские права (C) Microsoft Corporation. Все права зарезервирован.

/ out: test.exe test.obj

D:>

Запустили ли вы vcvarsall.bat с правильными параметрами для настройки переменных среды, прежде чем пытаться запустить cl.exe? Что-то по линии

"C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ vcvarsall.bat" x86_amd64

1 голос
/ 31 марта 2010

Если вы посмотрите на vcvarsall.bat, он напечатает заявление об отсутствии указанной конфигурации, если отсутствуют определенные пакетные файлы.

Для опции amd64 этот файл должен существовать:

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat
0 голосов
/ 31 марта 2010

Вы в 32-битной или 64-битной системе? По пути я предполагаю, что 64-битные стандартные библиотеки недоступны, по крайней мере, не в этом каталоге.

...