Visual Studio 2012 (и более ранние версии) способны компилировать C-код. Обычный C, не C ++. Было бы неплохо, если бы вы хотели избежать неприятностей во время выполнения. Я думал о компиляции простых двоичных файлов C и надеялся сделать это без MSVCRT
во время выполнения.
После добавления /TC
(компилировать как C) вариант Я надеялся получить двоичный файл только с основными зависимостями, такими как kernel32 и ntdll. Но вместо этого это было связано:
Мы хотим использовать VS 2012 и не время выполнения. Компилятору GCC это не нужно, поэтому должен быть способ компилировать и «простой» двоичный файл в VS. Нам не обязательно нужны сложные строковые функции или библиотеки даты / времени, просто простой код.
Вопрос: Можно ли скомпилировать код C в Visual Studio 2012 без среды выполнения MSVCRT (или даже кода C ++)?
Редактировать: без статическое связывание (/MT
)
Правильный ответ на вопрос «Можно ли скомпилировать код C в Visual Studio 20xx без среды выполнения MSVCRT (или даже кода C ++)?» использовать опцию / MT (Configuration Properties > C/C++ > Code Generation > Runtime Library=Multi-threaded (/MT)
). Это создает исполняемый файл без каких-либо зависимостей от MSVCRTxx в точности так, как вы хотели. Насколько я знаю, это все, что он делает. Он не накладывает никаких ограничений на все, что вы хотите сделать — все стандартные функции библиотеки C, такие как memcpy, все еще работают. Единственным другим отличием является то, что .EXE файл немного больше. Я годами создавал и распространял EXE-файлы, созданные таким образом из чистого кода ANSI C, без каких-либо проблем, используя MSVC6, MSVC2005, MSVC2008 и MSVC2013.
Что касается ответа на вопрос с классификатором «без статического связывания (/ MT)», ну, вы не можете.
Других решений пока нет …