【问题标题】:Command line compile using cl.exe?使用 cl.exe 进行命令行编译?
【发布时间】:2011-12-13 12:08:31
【问题描述】:

我试图在不使用 IDE 的情况下使用 Visual Studio Express 2010 C++ 编译器。我在 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin 中找到了 cl.exe。但是我遇到了一些困难。首先,当我键入 cl 说“程序无法启动,因为您的计算机中缺少 mspdb100.dll”时,它会弹出一个警告。

所以我将 C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE 添加到系统路径,然后重试,但这次:

致命错误 C1510:无法加载语言资源 clui.dll。

知道如何解决这个问题以便我可以编译吗?另外,我将如何设置路径,以便我可以从不包含 cl.exe 的解决方案文件夹中键入“cl main.cpp”等。目前我必须在 bin 文件夹内。谢谢。

【问题讨论】:

  • VS 不会为具有所有正确设置的 cmd shell 安装快捷方式/菜单项吗?
  • VS文件夹中有win32_all_vars.bat之类的,执行后再试。
  • @Mat:是的,但这并不是一个优雅的解决方案。
  • 不优雅?单击即可设置正确的编译器环境? ...只需看看快捷方式的作用,并以您喜欢的最“优雅”的方式重现它。
  • 以为你的意思是每次都打开 IDE 并从那里运行命令行。

标签: c++ visual-studio-2010 compiler-construction compiler-errors


【解决方案1】:

链接器内存不足时会发生该错误。
您可以使用 x64 工具架构 Visual Studio 工具。

msbuild 命令行:

msbuild myproject.vcxproj /p:PreferredToolArchitecture=x64

或者,更好的是,将其添加到 .vcxproj 中的项目设置中。
要指定 64 位版本的编译器和工具,请将以下属性组元素添加到 Myproject.vcxproj 项目文件的 Microsoft.Cpp.default.props 元素之后:

<PropertyGroup>  
    <PreferredToolArchitecture>x64</PreferredToolArchitecture>  
</PropertyGroup> 

这些选项将使 Visual Studio 使用 amd64 架构文件夹下的工具(根据目标架构):
VC\bin\amd64
VC\bin\amd64_x86
VC\bin\amd64_arm

https://msdn.microsoft.com/en-us/library/dd293607.aspx

【讨论】:

    【解决方案2】:

    这是一项非常简单且艰巨的任务。首先将编译器路径添加到系统路径:C:\Program Files\Microsoft Visual Studio 10.0\VC\bin;接下来,打开命令提示符并将目录更改为您的源文件夹;然后执行 vcvars32.bat 文件设置在 x86 上使用 vc++ 的环境;在此之后,您现在可以输入 cl 来编译您的程序

    【讨论】:

      【解决方案3】:

      我安装了多个版本的 VS;我为每个版本创建一个小 .BAT 文件,放置在路径中的某个位置,调用相关的“vcvarsall.bat”。例如“vc9.bat”为 VS2008 调用 vcvarsall.bat,而“vc10.bat”为 VS2010 调用 vcvarsall.bat。我可以像往常一样打开一个普通的命令窗口,输入“vc9”,然后,该命令窗口就可以使用 VS2008 进行编译等。

      【讨论】:

      • 这是个好主意,我不知道为什么我以前没有这样做过。
      • 我们可以看看你的批处理文件吗?也许是 github 要点或代码粘贴?
      【解决方案4】:

      按照 jsvk 的建议使用 vcvarsall.bat

      "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
      

      之后,如果您避免很多头痛,请使用devenv.exe 来构建您的东西:

      devenv solutionfile.sln /build [ solutionconfig ] [ /project projectnameorfile [ /projectconfig name ] ]
      

      还有很多其他命令行开关,您可以使用devenv /? 进行检查。

      【讨论】:

        【解决方案5】:

        尝试从

        启动 Visual Studio 命令提示符
        Start->
            All Programs ->
                Microsoft Visual Studio 2010 ->
                    Visual Studio Tools ->
                        Visual Studio Command Prompt 2010
        

        或者,您可以通过在命令提示符下运行它来设置环境:

        "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
        

        (注意:这将在运行后设置您的环境。)

        (注2:根据需要更改x86。选项为x86ia64amd64x86_amd64x86_ia64

        您可以从那里运行cl.exe。如果您希望在运行 cl 时自动完成和撤消此操作,请创建一个包含此内容的批处理文件:

        @echo off
        %comspec% /c ""c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 && cl.exe %*"
        

        /c 告诉命令提示符在运行此命令后结束会话,以便您的环境恢复正常。)

        从那里,将其命名为 cl.bat。将它放在某个文件夹中,并将该文件夹的路径添加到您的PATH 环境变量中,确保它位于cl.exe 的路径之前,这样cl.bat 就会在任何时候执行你输入 cl 而不是 cl.exe

        我建议您将cl.bat 放在您的system32/ 文件夹中,默认安装时它应该位于cl.exe 的路径之前。

        或者,您可以按任何顺序添加它并始终输入cl.bat,或将其命名为其他名称,以免混淆。

        【讨论】:

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