Компиляция командной строки
Я пытаюсь сделать программу, которая будет запускаться 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"" ")