Компилировать C в Visual Studio 2012 без среды выполнения MSVCRT

Visual Studio 2012 (и более ранние версии) способны компилировать C-код. Обычный C, не C ++. Было бы неплохо, если бы вы хотели избежать неприятностей во время выполнения. Я думал о компиляции простых двоичных файлов C и надеялся сделать это без MSVCRT во время выполнения.

После добавления /TC (компилировать как C) вариант Я надеялся получить двоичный файл только с основными зависимостями, такими как kernel32 и ntdll. Но вместо этого это было связано:

введите описание изображения здесь

Мы хотим использовать VS 2012 и не время выполнения. Компилятору GCC это не нужно, поэтому должен быть способ компилировать и «простой» двоичный файл в VS. Нам не обязательно нужны сложные строковые функции или библиотеки даты / времени, просто простой код.

Вопрос: Можно ли скомпилировать код C в Visual Studio 2012 без среды выполнения MSVCRT (или даже кода C ++)?

Редактировать: без статическое связывание (/MT)

1

Решение

Правильный ответ на вопрос «Можно ли скомпилировать код 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)», ну, вы не можете.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]