【问题标题】:VERY simple C program won't compile with VC 64非常简单的 C 程序不能用 VC 64 编译
【发布时间】:2010-03-31 04:47:57
【问题描述】:

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

这里有什么问题?

更新:
好的,现在我运行vcvarsall.bat amd64。它说“缺少指定的配置类型。可能未安装此配置的工具。”。如前所述,编译器明明装好了??

【问题讨论】:

    标签: c visual-studio-2008 compiler-construction


    【解决方案1】:

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

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

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

    【讨论】:

    • 它不存在。你知道我的安装有什么问题吗? (我没有操纵它什么的)
    • 只是文件丢失还是整个目录丢失? “bin\amd64”目录是 64 位编译器(cl.exe 是 64 位应用程序)。 bin\x86_amd64 是 64 位交叉编译器(cl.exe 是 32 位应用程序)。也许您只安装了 64 位编译器的 32 位版本?如果您尝试“vcvarsdll x86_amd64”,它会起作用吗?
    • 只有一个文件。我想我错过了当前正在下载的 SP1。
    • 如果有bin\x86_amd64,那为什么不用交叉编译器呢?
    • 如果您没有 SP1,这将是一个很好的第一步。否则 - 您可以转到添加/删除程序并在 Visual Studio 2008 上进行修复以查看文件是否出现(或重新出现)。
    【解决方案2】:

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

    D:>cl test.cpp Microsoft (R) C/C++ 优化编译器版本 15.00.30729.01 for 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\vcvarsall.bat”x86_amd64

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多