Ссылка на системную библиотеку C msvcrt.dll

В Windows есть библиотека по умолчанию C msvcrt.dll.

Можно ли написать простые программы на C, которые используют функции только из msvcrt.dll? Это избавило бы от необходимости установки последней версии VC.

Я думаю, что возможным способом является явное указание / NODEFAULTLIB и использование процедуры импорта dll для импорта функций msvcrt.dll.

У кого-нибудь есть подсказка?

3

Решение

Вы можете использовать MinGW-w64 GCC, который ссылается на msvcrt.dll именно по той причине, по которой вы говорите.

Вы можете найти загрузки Вот. Вы можете связать свои программы с -static-libgcc -static-libstdc++ если вы не хотите распространять какие-либо библиотеки DLL.

При этом, вы можете просто отправить msvcr*.dll файлы вместе с исполняемым файлом, не нужно ничего устанавливать.

2

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

Вы не хотите использовать msvcrt.dll.

  • Он очень старый и поэтому не соответствует современным спецификациям библиотеки времени выполнения C.
  • Он существует главным образом для обратной совместимости и для использования определенные компоненты системы которые имеют особые требования.
  • Вы не можете ожидать, что это будет широко исправлено, если проблема безопасности обнаружена.
  • Нет никакой гарантии, что двоичный файл, созданный с помощью современного компилятора, будет совместим с ABI в msvcrt.dll.
  • Современные компиляторы C и C ++ обладают глубокими знаниями и ожиданиями своих библиотек времени выполнения в отношении оптимизации, настройки и разборки, поэтому вам не следует смешивать и сопоставлять их.

Используйте библиотеку времени выполнения, которая поставляется с вашим компилятором. Вы можете ссылаться на него статически, если вы не хотите беспокоиться о его перераспределении, или вы можете прочитать о правильных способах перераспределения его с вашим приложением.

2

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