【问题标题】:Compile and link 32-bit program from Visual Studio 2008从 Visual Studio 2008 编译和链接 32 位程序
【发布时间】:2011-01-18 20:52:41
【问题描述】:

我昨天问了同样的基本问题,但还没有深入了解这个问题。基本上,这是我现在在构建应用程序时遇到的错误:

.\Debug\HotSync.obj:致命错误 LNK1112:模块机器类型“x64”与目标机器类型“X86”冲突

我假设这意味着我正在编译 64 位对象模块,然后尝试链接 32 位可执行文件。那么这是编译器本身的问题,还是给编译器的选项?该项目以前是 VC++ 2003 项目,所以一直是 32 位的。

我可能会提到,我能找到的 cl.exe 的唯一版本是在 VC\bin 的 amd64 和 x86-amd64 子目录中。我必须手动将这些路径之一添加到“VC++ 目录”列表中,但结果都相同。

我的主机 PC 是运行 Windows 7 64 位的 AMD,但我希望我仍然可以构建可以在 XP 上运行的程序。有人知道怎么做吗?

【问题讨论】:

    标签: visual-studio-2008


    【解决方案1】:

    Visual Studio 2008 的默认安装应将 x86 cl.exe 和相关的编译器二进制文件放入:

    C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\
    

    在 Win7 x64 系统上。

    如果您没有 cl.exe 那里(即,“上方”amd64x86_amd64 目录),那么您可能需要考虑重新安装 Visual Studio。

    请注意,amd64 目录中的编译器以 x64 系统为目标,它本身就是为在 x64 系统上运行而构建的。 x86_amd64 目录中的编译器也以 x64 系统为目标,但它本身是一个 x86 二进制文件(即,它从 x86 32 位系统交叉编译到 x64)。

    您还应该在 Visual Studio 2008 程序组(或 Win7 中可能调用的任何程序)中有一个捷径:

    "Microsoft Visual Studio 2008" | "Visual Studio Tools" | "Visual Studio 2008 Command Prompt"
    

    打开一个命令窗口,最初显示:

    Setting environment for using Microsoft Visual Studio 2008 x86 tools.
    

    在没有选项的情况下运行cl 命令应该会说:

    Microsoft (R) 32 位 C/C++ 优化编译器版本 15.00.21022.08 用于 80x86

    再一次 - 如果这些都不适合您,您需要重新安装。

    另外,请确保构建中涉及的所有项目的项目配置都设置为 Win32 而不是 x64。

    【讨论】:

    • 我希望这不是因为我有 VS 2008“标准”而不是“专业”,但我得到的印象是,因为我将它安装在64位Win7 Professional系统,无需安装创建32位应用程序的组件。该产品的设置几乎没有自定义选项,因此很难准确判断它在做什么。我会尝试重新安装它,看看会发生什么。
    • 抱歉,这些天我的记忆并没有回溯到那么远。我显然解决了这个问题,因为我从那时起就一直在使用它。
    【解决方案2】:

    显然,“问题”是我只安装了 C++,因为这就是我计划使用的全部内容。但由于某种原因,我需要的 cl.exe 仅作为 C# 安装的一部分安装。所以去想一想!适合我尝试通过不进行完整安装来节省混乱。

    【讨论】:

    • 这真的很令人惊讶,尽管我每次安装 VS 时都会安装所有 .NET 的东西,所以我永远不会遇到这种情况。下次我进行安装时,我会尽量记住只做 C++ 并看看我得到了什么(但老实说,到那时我可能会忘记这一切......)。
    • 这里有同样的问题。 x86 cl.exe 不存在于 VC\bin 中(而 amd64 版本存在于 VC\bin\amd64 和 VC\bin\x86_amd64 目录中)。我也只安装了 C++。添加C#后,已添加x86 cl.exe。
    猜你喜欢
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 2013-03-20
    • 2019-02-17
    相关资源
    最近更新 更多