Компиляция командной строки

Я пытаюсь сделать программу, которая будет запускаться 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. У вас есть идеи, как заставить это работать?

РЕДАКТИРОВАТЬ: я ввел "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\cl.exe" /EHsc "C:\myprogram.cpp" в CMD, и он не компилировался, но вместо этого он выдал ошибку (Это приложение не удалось запустить, потому что mspdb100.dll не был найден.)

РЕДАКТИРОВАТЬ: Я выполнил свою программу через "VS Command Prompt", и она скомпилировала мою программу (она показала, что она скомпилирована), но нет скомпилированных файлов exe и obj.

4 ответа

Решение

Не берите в голову, вместо того, чтобы использовать cl.exe, я теперь использую MSBuild. Намного лучше.

Вы можете запустить 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"" "

Вы, вероятно, сталкиваетесь с проблемами с пробелами в пути для cl.exe, Пытаться:

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

Также убедитесь, что myprogram.cpp находится в текущем каталоге для запуска программы (или укажите полный путь к нему в командной строке).

Одиночные тики ' не может использоваться в командной строке для файлов, содержащих пробелы. Попробуйте использовать двойные кавычки " вместо:

Shell("cl /EHsc ""a .cpp file"" ")
Другие вопросы по тегам