Компиляция командной строки - PullRequest
0 голосов
/ 04 августа 2011

Я пытаюсь создать программу, которая будет запускать 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 ]

1 голос
/ 08 августа 2011

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

1 голос
/ 04 августа 2011

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

0 голосов
/ 05 августа 2011

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

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

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

0 голосов
/ 04 августа 2011

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

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