如何在命令行中使用 Visual Studio 编译 x64 代码?

Posted

技术标签:

【中文标题】如何在命令行中使用 Visual Studio 编译 x64 代码?【英文标题】:How to compile x64 code with Visual Studio in command line? 【发布时间】:2011-02-02 15:18:32 【问题描述】:

我想使用 Windows 命令行编译一个简单的 hello-world 风格的程序。

cl file_name.c

很简单。现在我想在 64 位中做同样的事情。我该怎么办?

【问题讨论】:

【参考方案1】:

从 Visual Studio x64 命令提示符运行 cl。

【讨论】:

我该怎么做?我的开始菜单中只有一个 Visual Studio 命令提示符。这是我已经在使用的。 @Paperflyer:您可能没有安装 64 位编译器,请查看我的帖子。 我确实安装了它们。 (反正控制面板就是这么说的)【参考方案2】:

您需要使用发出 x64 代码的 cl.exe 编译器版本。哪一个取决于您的设置。

让我们考虑一下您在 64 位计算机上的情况。为此,您需要使用位于

的编译器

c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cl.exe

如果您使用的是 32 位机器,则需要使用位于

的交叉编译器

c:\Program Files\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\cl.exe

【讨论】:

嗯,在 x64 机器上,有 2 个选项。可以使用 32 位 x64 交叉编译器或本机 64 位编译器。结果相同。 我有不同版本的 VC (2008),但我找到了编译器。它仍然产生奇怪的错误,但至少这个问题得到了解决。谢谢。【参考方案3】:

正如其他人所提到的,答案取决于您使用的是本机 x64 编译器还是交叉编译器。这个网页应该可以帮助你http://msdn.microsoft.com/en-us/library/x4d2c09s.aspx

【讨论】:

【参考方案4】:

您也可以使用批处理文件“Vcvarsall.bat”(默认情况下,该文件的完整路径是 C:\Program Files\Microsoft Visual Studio 8\VC\Vcvarsall.bat,对于 VS2005)。

如果未提供参数,此批处理文件将配置使用 x86 32 位编译器所需的环境变量。但它可用于配置任何 64 位编译器,例如使用本机 64 位编译器传递“amd64”作为参数。然后运行 ​​cl.exe。

【讨论】:

【参考方案5】:

凯尔是对的。这只是正确设置 PATH 环境变量的问题。常规 x86 编译器位于 vc\bin 子目录中。有两个64位编译器,一个32位编译器在vc\bin\x86_amd64中生成64位代码,一个64位编译器在vc\bin\amd64中生成64位代码。

默认的 Visual Studio 设置始终使用 32 位编译器来生成 64 位代码。

请注意,默认情况下不安装 64 位编译器。如果您没有使用自定义安装选项,则必须重新运行 setup.exe。并重新运行 SP1 安装程序。

【讨论】:

好的,但我得到 libcpmtd.lib(ios.obj):致命错误 LNK1112:模块机器类型“X86”与目标机器类型“x64”冲突,我无法使用设置链接器选项/link /MACHINE:AMD64 in VS2013【参考方案6】:

如果你有代码作为项目的一部分,你可以使用如下

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" myproject.sln /Build "Release|x64"

从以下链接获取

http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/ed855b9d-55ef-49f1-bf27-f20a79be687e

【讨论】:

【参考方案7】:

从“Visual Studio x64 命令提示符”或类似“VS 2017 的 x64 本机工具命令提示符”之类的东西运行 cl。运行where cl 以查看您正在运行的“cl”的路径。路径中应包含“x64”或“amd64”之类的内容。

开始菜单搜索有时可能无济于事。尝试输入“vs20xx”或“vs 20xx”而不是“visual studio”来找到它。提示的名称随版本而变化。如果它没有说“64”,那么它会设置一个32位的环境。

64 位提示往往只是调用带有 64 位参数的“Vcvarsall.bat”,但该参数会随着时间而改变,并且可能不向后兼容。

【讨论】:

以上是关于如何在命令行中使用 Visual Studio 编译 x64 代码?的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 中编译与在命令行中使用 cl 编译

当我仅使用链接器选项 /LTCG 时,为啥 Visual Studio 会在链接器命令行中显示选项 /PGD?

SSIS 包在 Visual Studio 和命令行中有效,但在代理中无效

使用命令行在 Visual Studio 中编译为发行版

如何在 Visual Studio 2010 Express 中将 cpp 编译为 dll

如何用visual studio2012编c++程序?