这是一个非常简单的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:函数main中引用的未解析的外部符号printf”。据我了解,它无法链接到printf
,对吧?
显然,我安装了Microsoft Visual C ++编译器2008(标准版)x86和x64,并且正在使用64位版本的Windows(7)。
这里有什么问题?
更新
好的,现在我跑了vcvarsall.bat amd64
。它是“缺少指定的配置类型。可能未安装此配置的工具。”。如前所述,编译器显然是安装的?
答案 0 :(得分:2)
您的设置有问题。它编译和编译链接很好。
D:&gt; cl test.cpp Microsoft(R)C / C ++ 优化编译器版本 15.00.30729.01 for x64版权所有(C)Microsoft Corporation。所有权利 保留
test.cpp Microsoft(R)Incremental 链接器版本9.00.30729.01版权所有 (C)Microsoft Corporation。所有权利 保留
/out:test.exe test.obj
d产品:&gt;
在尝试运行cl.exe之前,您是否使用正确的选项运行vcvarsall.bat来设置环境变量?
的一些方面“C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC \ vcvarsall.bat”x86_amd64
答案 1 :(得分:1)
如果查看vcvarsall.bat,如果缺少某些批处理文件,它将打印指定的配置缺失语句。
对于amd64选项,此文件必须存在:
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat
答案 2 :(得分:0)
您使用的是32位还是64位系统?我猜测64bit标准库不可用,至少不在那个目录中。