代码之家  ›  专栏  ›  技术社区  ›  bastibe

非常简单的C程序不能用vc 64编译

  •  3
  • bastibe  · 技术社区  · 14 年前

    下面是一个非常简单的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 对吧?

    显然,我安装了微软Visual C++编译器2008(标准eNU)x86和x64,并且AM使用Windows 64位的味道(7)。

    这里有什么问题?

    更新:
    好吧,现在我跑了 vcvarsall.bat amd64 . 它说“指定的配置类型丢失。可能未安装此配置的工具。“。如前所述,编译器是否已清楚安装??

    3 回复  |  直到 14 年前
        1
  •  1
  •   Brian Walker    14 年前

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

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

    C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat
    
        2
  •  2
  •   KTC    14 年前

    你的设置有问题。它可以为我编译和链接。

    D:& Ct Test.CPP微软(R)C/C++ 优化编译器版本 15.00.30729.01对于x64,版权所有(c)Microsoft Corporation。所有权利 保留的。

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

    /输出:test.exe test.obj

    D:&

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

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

        3
  •  0
  •   sbi    14 年前

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