非常简单的 C 程序无法使用 VC 64 进行编译

问题描述 投票:0回答:3

这是一个非常简单的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++ Compiler 2008(标准 enu)x86 和 x64,并且正在使用 64 位版本的 Windows (7)。

这里有什么问题?

更新:
好吧,现在我跑了

vcvarsall.bat amd64
。它说“缺少指定的配置类型。可能未安装此配置的工具。”。如前所述,编译器显然已安装??

c visual-studio-2008
3个回答
2
投票

如果您查看 vcvarsall.bat,如果某些批处理文件丢失,它将打印指定的配置丢失语句。

对于 amd64 选项,此文件必须存在:

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat

2
投票

您的设置有问题。它对我来说编译和链接很好。

D:>cl test.cpp Microsoft (R) C/C++ 优化编译器版本 15.00.30729.01(适用于 x64) 版权所有 (C) Microsoft Corporation。 版权所有 保留。

test.cpp Microsoft (R) 增量 链接器版本 9.00.30729.01 版权所有 (C) 微软公司。 版权所有 保留。

/out:test.exe test.obj

D:>

在尝试运行 cl.exe 之前,您是否使用正确的选项运行 vcvarsall.bat 来设置环境变量?沿着

线的东西

“C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC cvarsall.bat”x86_amd64


0
投票

您使用的是 32 位还是 64 位系统?我从路径中猜测 64 位标准库不可用,至少在该目录中不可用。

© www.soinside.com 2019 - 2024. All rights reserved.