命令行编译

时间:2011-08-04 19:46:53

标签: .net shellexecute

我正在尝试创建一个程序,它将运行cl.exe(C / C ++编译器)并编译一个C ++程序。这是我的代码:

Module Module1

    Sub Main()
        Shell("C:\Program Files\Microsoft Visual Studio 10.0\VC\ _ 
        bin\cl.exe /EHsc ""C:\myprogram.cpp"" ")

        Console.WriteLine("Compilation Succeded")
        Console.ReadLine()
    End Sub

End Module

这不会编译.cpp文件。你对如何使这项工作有任何想法吗?

编辑:我在CMD中输入“C:\ Program Files \ Microsoft Visual Studio 10.0 \ VC \ bin \ cl.exe”/ EHsc“C:\ myprogram.cpp”并且它没有'编译,但它引发了一个错误(此应用程序无法启动,因为找不到mspdb100.dll。)

编辑:我通过'VS命令提示符'执行我的程序并编译了我的程序(它显示它已编译),但是没有编译的exe和obj文件。

4 个答案:

答案 0 :(得分:1)

您可以运行Program Files\Microsoft Visual Studio 10.0\VC\bin\cl.exe

此路径将根据安装的Visual Studio版本,操作系统的位数和系统驱动器而发生变化 您可以在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\InstallDir中找到路径 在我的机器上,它是C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\

CL.exe未编译您的程序,因为您的命令行不正确 特别是,您可能需要用双引号括起源路径,而不是单引号 要在字符串文字中使用双引号,请将它们加倍:".../EHsc ""Path.cpp"" "

答案 1 :(得分:1)

没关系,而不是使用cl.exe我现在正在使用MSBuild。好多了。

答案 2 :(得分:0)

单个刻度'不能在命令行上用于包含空格的文件。请尝试使用双引号"代替:

Shell("cl /EHsc ""a .cpp file"" ")

答案 3 :(得分:0)

您可能遇到cl.exe路径中的空格问题。尝试:

Shell("""C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\cl.exe"" /EHsc ""myprogram.cpp"" ")

还要确保myprogram.cpp位于程序运行的当前目录中(或在命令行中指定它的完整路径)。