Runtime c что это
Нигде не нашел чёткого опрделения этми двумя понятиям.
Я понимаю фреймворк, как платформу, которая необходима для работы каких-либо приложений. Например, набор динамически линкуемых библиотек для нескольких приложений - уже фреймворк. Также под это определение подохдит и Java Runtime Environment (в том числе и JVM). Однако что такое рантайм? С одной стороны это всего лишь фаза выполнения программы. С другой стороны есть куча терминов, как runtime libraries, runtime system. Что вкладывает майкрософт в это понятие тоже неясно. Объясните, пожалуйста!
183 1 1 золотой знак 1 1 серебряный знак 4 4 бронзовых знакаМежду библиотекой и фреймворком разница небольшая, но принципиальна. Если Ваш код просто использует функции модуля, то этот модуль скорее всего библиотека. А вот если модуль заставляет Вас писать код так как он хочет и сам его вызывает, то это уже фреймворк. А вот собственно модуль - это набор файлов-исходников (иногда уже скомпилированных).
runtime - это часть кода, существует в выполнимом файле (либо в отдельных so/dll) и обеспечивает всякие "удобства". Например, узнать тип объекта или сделать те же виртуальные вызовы. Добавляется обычно компилятором и обычный пользователь может даже не знать о нем. Также словом runtime называют то время, когда программа выполняется. Что конкретно имеется ввиду - нужно сдедить за контекстом.
runtime libraries - это библиотеки, которые используются во время работы программы. Иногда библиотеки поставляются в двух видах - для разработки и для обычной работы (вторые часто оптимизированы и с них выброшено лишнее). Хороший пример - bpl файлы делфи. Для одного и того же компонента могут быть библиотеки, которые содержат всякие инструметы для IDE, а есть которые только для работоспособности кода.
JRE - это не фреймворк, это runtime библиотека. Хотя с другой стороны это фреймворк для байткода. Но так как на байткоде пищут только особые извращенцы, то обычному программисту это не фреймфорк. А вот вся java - это один сплошной фреймворк:)
Objective-C задумывался как надстройка над языком C, добавляющая к нему поддержку объектно-ориентированной парадигмы. Фактически, с точки зрения синтаксиса, Objective-C — это достаточно небольшой набор ключевых слов и управляющих конструкций над обычным C. Именно Runtime, библиотека времени выполнения, предоставляет тот набор функций, которые вдыхают в язык жизнь, реализуя его динамические возможности и обеспечивая функционирование ООП.
Базовые структуры данных
Функции и структуры Runtime-библиотеки определены в нескольких заголовочных файлах: objc.h , runtime.h и message.h . Сначала обратимся к файлу objc.h и посмотрим, что представляет из себя объект с точки зрения Runtime:
Мы видим, что объект в процессе работы программы представлен обычной C-структурой. Каждый Objective-C объект имеет ссылку на свой класс — так называемый isa-указатель. Думаю, все видели его при просмотре структуры объектов во время отладки приложений. В свою очередь, класс также представляет из себя аналогичную структуру:
Класс в Objective-C — это полноценный объект и у него тоже присутствует isa-указатель на «класс класса», так называемый метакласс в терминах Objective-C. Аналогично, С-структуры определены и для других сущностей языка:
Функции Runtime-библиотеки
- Манипулирование классами: class_addMethod , class_addIvar , class_replaceMethod
- Создание новых классов: class_allocateClassPair , class_registerClassPair
- Интроспекция: class_getName , class_getSuperclass , class_getInstanceVariable , class_getProperty , class_copyMethodList , class_copyIvarList , class_copyPropertyList
- Манипулирование объектами: objc_msgSend , objc_getClass , object_copy
- Работа с ассоциативными ссылками
Пример 1. Интроспекция объекта
Рассмотрим пример использования Runtime библиотеки. В одном из наших проектов модель данных представляет собой plain old Objective-C объекты с некоторым набором свойств:
Для удобства отладки хотелось бы, чтобы при выводе в лог печаталась информация о состоянии свойств объекта, а не нечто вроде <COConcreteObject: 0x71d6860> . Поскольку модель данных достаточно разветвленная, с большим количеством различных подклассов, нежелательно писать для каждого класса отдельный метод description , в котором вручную собирать значения его свойств. На помощь приходит Objective-C Runtime:
Метод, определенный в общем суперклассе объектов модели, получает список всех свойств объекта с помощью функции class_copyPropertyList . Затем значения свойств собираются в NSDictionary , который и используется при построении строкового представления объекта. Данный алгоритм раработает только со свойствами, которые являются Objective-C объектами. Проверка типа осуществляется с использованием функции property_getAttributes . Результат работы метода выглядит примерно так:
2013-05-04 15:54:01.992 Test[40675:11303] COConcreteObject: name = Foo;
quantity = 10;
title = bar;
>
Вызов objc_msgSent инициирует процесс поиска реализации метода, соответствующего селектору, переданному в функцию. Реализация метода ищется в так называемой таблице диспетчеризации класса. Поскольку этот процесс может быть достаточно продолжительным, с каждым классом ассоциирован кеш методов. После первого вызова любого метода, результат поиска его реализации будет закеширован в классе. Если реализация метода не найдена в самом классе, дальше поиск продолжается вверх по иерархии наследования — в суперклассах данного класса. Если же и при поиске по иерархии результат не достигнут, в дело вступает механизм динамического поиска — вызывается один из специальных методов: resolveInstanceMethod или resolveClassMethod . Переопределение этих методов — одна из последних возможностей повлиять на Runtime:
Пример 2. Method Swizzling
Одна из особенностей категорий в Objective-C — метод, определенный в категории, полностью перекрывает метод базового класса. Иногда нам требуется не переопределить, а расширить функционал имеющегося метода. Пусть, например, по каким-то причинам нам хочется залогировать все добавления элементов в массив NSMutableArray . Стандартными средствами языка этого сделать не получится. Но мы можем использовать прием под названием method swizzling:
Мы перегружаем метод load — это специальный callback, который, если он определен в классе, будет вызван во время инициализации этого класса — до вызова любого из других его методов. Здесь мы меняем местами реализацию базового метода addObject: и нашего метода logAddObject: . Обратите внимание на «рекурсивный» вызов в logAddObject: — это и есть обращение к перегруженной реализации основного метода.
Пример 3. Ассоциативные ссылки
Еще одним известным ограничением категорий является невозможность создания в них новых переменных экземпляра. Пусть, например, вам требуется добавить новое свойство к библиотечному классу UITableView — ссылку на «заглушку», которая будет показываться, когда таблица пуста:
«Из коробки» этот код работать не будет, вы получите исключение во время выполнения программы. Эту проблему можно обойти, используя функционал ассоциативных ссылок:
Любой объект вы можете использовать как ассоциативный массив, связывая с ним другие объекты с помощью функции objc_setAssociatedObject . Для ее работы требуется ключ, по которому вы потом сможете извлечь нужный вам объект назад, используя вызов objc_getAssociatedObject . При этом вы не можете использовать скопированное значение ключа — это должен быть именно тот объект (в примере — указатель), который был передан в вызове objc_setAssociatedObject .
Содержание
Технология
Новый C++/CX (Component Extensions) язык, который заимствует часть синтаксиса C++/CLI, позволяет писать и использовать компоненты WinRT с меньшим количеством связующего кода, видимого для программиста, по сравнению с классическим COM программированием на C++, и накладывает меньше ограничений по сравнению с C++/CLI при смешении типов. Компонентные Расширения C++/CX рекомендуются для использования только в API-boundary, а не для других целей. Стандартный C++ также может быть использован для программирования с компонентами WinRT, с помощью Windows Runtime C++ Template Library (WRL), которая аналогична по назначению тому, что Active Template Library обеспечивает COM.
WinRT приложения выполняются в песочнице и требуют прямого разрешения пользователя для доступа к критически важным функциям операционной системы и базового оборудования. Доступ к файлам ограничивается несколькими заранее определенными местами, такими как каталоги, документы или изображения.
WinRT приложения для Windows RT, Windows 8 и для других упакованы в .appx формат файла, основанный на Open Packaging Conventions, использующий формат ZIP с добавлением файлов XML. Приложения WinRT распространяются в основном через магазин приложений Windows Store, где программное обеспечение WinRT (называется Windows Store apps) могут быть загружены и приобретены пользователями. Приложения WinRT могут быть загружены только из Windows Store на Windows 8 или из RT систем, являющимися частью домена Windows, или оснащенными специальным ключом активации, полученного от корпорации Microsoft.
Сервисы
Метаданные
Метаданные описывает код, написанный для платформы WinRT. Они определяет модель программирования, которая позволяет писать объектно-ориентированный код, который может быть поделен между языками программирования, а также дает возможность предоставлять сервисы, подобные рефлексии.
Герб Саттер, эксперт по C++ в Microsoft, объяснил во время своей сессии по C++ на конференции Build 2011, что метаданные WinRT это метаданные CLI. Машинный код (т.е. машинный код процессора) не может содержать метаданные и поэтому хранится в отдельных WINMD-файлах, которые могут быть отображенны как обычные CLI сборки.
Так как это метаданные CLI, код, написанный на родном языке WinRT можно использовать с управляемыми CLI языками.
Тип системы
Компоненты WinRT
Интерфейсы программирования
В терминологии WinRT, языковая привязка называется языковой проекцией.
C++ (WRL, Component Extensions)
Родной C++ - объект первого класса WinRT-платформы. Для использования WinRT из C++ доступны две поддерживаемые опции: WRL, библиотека шаблонов стиля ATL и C++/CX (C++ с расширениями компонентов), которая напоминает C++/CLI. Из-за внутренних требований к потреблению в Microsoft, WRL не является исключением, что означает, что его возврат значений дисциплины основан на HRESULT, как и на COM. C++/CX, с другой стороны, оборачивает вызовы WinRT кодом, который выполняет проверку ошибок и выдает исключения по мере необходимости.
В C++/CX есть несколько расширений, которые позволяют интегрироваться с платформой и ее системой типов. Синтаксис похож на синтаксис C++/CLI, хотя он генерирует собственный код и метаданные, которые интегрируются со средой выполнения. Например, объектам WinRT может быть назначено ref new , что является аналогом gcnew из C++/CLI. Оператор-шляпа ^ сохраняет свое значение, однако в случае, когда и вызывающий, и вызываемый записываются на C++ и живут в одном процессе, ссылка шляпы - это просто указатель на vptr для таблицы виртуальных методов (vtable, VMT).
WinRT - это родная платформа и поддерживает любой собственный C++ код. Разработчик на C++ может повторно использовать существующие собственные библиотеки C/C++, используя только языковые расширения при написании кода, взаимодействующего со средой выполнения.
Пользователи, которые взаимодействуют с другим языком должен иметь подпись с типами WinRT или управляемый тип, который конвертируется.
JavaScript
Приложения WinRT также могут быть закодированы с использованием HTML с JavaScript в code-behind, которые выполнены с помощью движка рендеринга Trident и движока Chakra JavaScript, оба из которых также используются Internet Explorer. При кодировании приложения WinRT в JavaScript, его особенности адаптируются, чтобы следовать схемам наименования JavaScript и пространства имен также отображаются на объекты JavaScript.
WinRT поставляется с интерфейсом прикладного программирования (API) в виде библиотеки классов, который предоставляет возможности Windows 8 для разработчиков,как и его многонаправленный интерфейс API. Он доступен и используется из любого поддерживаемого языка.
Классы Runtime
Классы Windows Runtime представляют собой набор пакетов SDK, которые обеспечивают доступ ко всем функциям из из XAML парсера для функции камеры. В SDK реализованы как родные библиотеки C/C++ (неуправляемые).
Схемы наименования
Ограничения и правила
Поскольку Windows Runtime проецируется на различных языках, некоторые ограничения основных типов данных существуют для того, чтобы разместить все эти языки. Программисты должны быть осторожны с поведением этих типов при использовании с открытым доступом (для параметров метода, метод возвращаемых значений, свойств и т.д.)
История версий
Версия Windows | |
---|---|
Windows 8 | Windows Runtime |
Windows 8.1 | |
Windows 10 | Universal Windows Platform (UWP) |
Windows Phone Runtime
Начиная с Windows Phone 8 можно разрабатывать приложения, используя версию Windows Runtime, под названием Windows Phone Runtime (WPRT). Несмотря на то,что WP8 принес ограниченную поддержку, платформа действительно в конечном счете сходится с Windows 8.1 в Windows Phone 8.1.
Windows Phone 8
Windows Phone 8 имеет ограниченную поддержку для разработки и потребления компонентов Windows Runtime за счет Windows Phone Runtime. Большинство интерфейсов API Windows Runtime в Windows 8, которые обрабатывают основные функции операционной системы, были перенесены в Windows Phone 8 [2] . Поддержка для разработки нативных игр с использованием C++/CX и DirectX была добавлена по просьбе индустрии разработки игр.
Windows Phone 8.1
Поддержка Windows Runtime на Windows Phone 8.1 сходится с Windows 8.1. Релиз привносит на платформу полный API Windows Runtime, включая поддержку среды выполнения Windows Runtime XAML Framework и привязки к языку для C++/CX и HTML5-JavaScript. Существует также тип проекта под названием Универсальные приложения, позволяющие приложениям совместно использовать код через версии 8.1 Windows Phone и Windows.
Обновлена версия Windows Phone 8 Silverlight Framework. Она может использовать некоторые новые функции в среде выполнения Windows.
Windows Phone Runtime использует формат пакета AppX из Windows 10, ранее использовав Silverlight XAP.
Существует три формы библиотеки C Run-time, предоставленной SDK Win32:
LIBC. LIB — это статически связанная библиотека для однопотоких программ.
LIBCMT. LIB — это статически связанная библиотека, которая поддерживает многоуровневые программы.
CRTDLL. LIB — это библиотека импорта для CRTDLL.DLL, которая также поддерживает многоуровневые программы. CRTDLL.DLL является частью Windows NT.
Microsoft Visual C++ 32-битное издание также содержит эти три формы, однако CRT в DLL называется MSVCRT. LIB. DLL перераспределяется. Его имя зависит от версии VC++ (то есть MSVCRT10.DLL или MSVCRT20.DLL). Обратите внимание, что MSVCRT10.DLL не поддерживается на Win32s, в то время как CRTDLL. LIB поддерживается в Win32s. MSVCRT20.DLL версии: одна для Windows NT и другая для Win32s.
Раздел 2. Использование библиотек CRT при создании DLL
При создании DLL, использующей любую из библиотек C Run-time, для обеспечения правильной инициализации CRT
Необходимо назвать функцию инициализации и указать точку входа DllMain() с помощью параметра linker. -entry:_DllMainCRTStartup@12
Точка входа DLL должна явно вызывать присоединение процесса и CRT_INIT() отсоединяться от процесса.
Это позволяет библиотекам C Run-time правильно распределять и инициализировать данные C Run-time при присоединении процесса или потока к DLL, правильно очищать данные C Run-time, когда процесс отсоединяется от DLL, а глобальные объекты C++ в DLL должны быть правильно построены и разрушаться.
В образцах Win32 SDK используется первый метод. Используйте их в качестве примера. Также обратитесь к ссылке На ссылку программиста Win32 для и документацию DllEntryPoint() Visual C++ для DllMain() . Обратите внимание, что если оно существует, вызываем и вызываем DllMainCRTStartup() CRT_INIT() CRT_INIT() DllMain().
Если вы хотите использовать второй метод и вызвать код инициализации CRT самостоятельно, вместо использования и , есть DllMainCRTStartup() DllMain() два метода:
Если нет функции входа, которая выполняет код инициализации, укажите в качестве точки входа CRT_INIT() DLL. Если предположить, что вы включили NTWIN32. MAK, который определяется как , добавьте параметр в строку DLLENTRY @12 ссылки DLL: -entry:_CRT_INIT$(DLLENTRY) .
Если у вас есть собственная точка входа в DLL, сделайте следующее в точке входа:
Используйте этот прототип CRT_INIT() для: BOOL WINAPI _CRT_INIT(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved);
Сведения о CRT_INIT() значениях возврата см. в документации DllEntryPoint; возвращаются те же значения.
На и DLL_PROCESS_ATTACH (см. DllEntryPoint в ссылке API Win32 для получения дополнительных сведений об этих флагах), вызов DLL_THREAD_ATTACH , во-первых, перед вызовом каких-либо функций C run-time или любых операций с плавающей CRT_INIT() точкой.
Вызов собственного кода инициализации и инициализации/завершения процесса/потока.
On DLL_PROCESS_DETACH and , call DLL_THREAD_DETACH CRT_INIT() last, after all C Run-time functions have been called and all floating-point operations are completed.
Не забудьте передать все параметры точки входа; ожидается, что эти параметры не будут надежно работать, если они будут пропущены (в частности, для определения необходимости инициализации или прекращения процесса требуется CRT_INIT() CRT_INIT() fdwReason).
Ниже приведен пример функции точки входа скелета, которая показывает, когда и как сделать эти вызовы в точке CRT_INIT() входа DLL:
Это не обязательно, если вы используете DllMain() и -entry:_DllMainCRTStartup@12 .
Раздел 3. Использование NTWIN32. MAK для упрощения процесса сборки
В NTWIN32 существуют макрос. MAK, который можно использовать для упрощения makefiles и обеспечения правильной их работы во избежание конфликтов. По этой причине Корпорация Майкрософт настоятельно рекомендует использовать NTWIN32. MAK и макрос в этом.
Для компиляции используйте: $(cvarsdll) for apps/DLLs using CRT in a DLL .
Для увязки используйте одно из следующих ниже.
- $(conlibsdll) for console apps/DLLs using CRT in a DLL
- $(guilibsdll) for GUI apps using CRT in a DLL
Раздел 4. Проблемы, с которыми сталкиваются при использовании нескольких библиотек CRT
Если приложение, которое делает вызовы C Run-time ссылками на DLL, которые также делают вызовы C Run-time, следует помнить, что если они связаны с одной из статически связанных библиотек C Run-time (LIBC). LIB или LIBCMT. LIB), .EXE и DLL будут иметь отдельные копии всех функций C Run-time и глобальных переменных. Это означает, что данные C Run-time не могут быть общими между .EXE и DLL. Некоторые из проблем, которые могут возникнуть в результате:
Передача буферизуемого потока из .EXE/DLL в другой модуль
Перераспределение памяти с вызовом C Run-time в .EXE/DLL и ее перераспределение или ее освободить в другом модуле
Проверка или установка значения глобальной переменной errno в .EXE/DLL и ожидание, что оно будет таким же в другом модуле. Связанной проблемой является вызов в противоположном модуле, откуда произошла ошибка C Run-time, так как perror() perror() используется errno.
Чтобы избежать этих проблем, связывать .EXE и DLL с CRTDLL. LIB или MSVCRT. LIB, которая позволяет .EXE и DLL использовать общий набор функций и данных, содержащихся в CRT в DLL, и C Run-time data such as stream handles can then be shared by both the .EXE and DLL.
Раздел 5. Смешивание типов библиотек
Вы можете связать DLL с CRTDLL. LIB/MSVCRT. LIB независимо от того.EXE с чем связана ваша .EXE, если вы не смешиваете структуры данных CRT и передаете обработки файлов CRT или указатели CRT FILE* другим модулям.
При смешивании типов библиотек придерживаются следующих принципов:
Обработки файлов CRT могут выполняться только созданным модулем CRT.
Указатели CRT FILE* могут выполняться только созданным модулем CRT.
Память, выделенная с помощью функции CRT, может быть освобождена или перенадвижена только выделенным модулем malloc() CRT.
Чтобы проиллюстрировать это, рассмотрим следующий пример:
- .EXE связан с MSVCRT. LIB
- DLL A связан с LIBCMT. LIB
- DLL B связан с CRTDLL. LIB
Если .EXE создает обработку CRT-файла с помощью или, эта ручка файла может быть передана только в файл , , и т.д. в .EXE _create() _open() _lseek() _read() _write() _close() файле. Не передай эту обработку CRT-файла в DLL. Не передай обработку файлов CRT, полученную из DLL в другую DLL или в .EXE.
Если DLL A выделяет блок памяти с помощью, только DLL A может вызывать или работать malloc() free() на этом _expand() realloc() блоке. Вы не можете звонить из DLL A и пытаться освободить этот блок из .EXE malloc() или из DLL B.
Если все три модуля связаны с CRTDLL. LIB или все три были связаны с MSVCRT. LIb, эти ограничения не будут применяться.
При привязке DLLs к LIBC. LIB, следует помнить, что если существует вероятность того, что такая DLL будет вызываться многоуровневой программой, DLL не будет поддерживать несколько потоков, запущенных в DLL одновременно, что может вызвать серьезные проблемы. Если существует вероятность того, что DLL будет вызвана многоуровневой программой, не забудьте связать ее с одной из библиотек, поддерживаюх многоуровневые программы (LIBCMT. LIB, CRTDLL. LIB или MSVCRT. LIB).
Содержит в себе большинство необходимого инструментария разработчика для выпуска полноценных программ, в том числе и с графическим UI. С помощью Visual Studio можно создавать приложения для всех популярных платформ, как десктопных так и мобильных: iOS, iPadOS, macOS и еще ряда других.
Обзор Microsoft Visual C++
Обязательный комплект библиотек, который должен присутствовать на каждом компьютере. С его помощью можно «обучить» систему распознавать код, написанный в среде разработки Майкрософт Визуал С++. Эта платформа используется в большинстве современных игр, поэтому после инсталляции компонентов вы исключите многие системные ошибки при попытке открыть приложения.
Пакет Визуал С++ является официальным продуктом от Майкрософт, это гарантирует корректную работу со всеми современными версиями операционок.
Отметим, что выпуски библиотек не являются взаимозаменяемыми – самые «свежие» версии по дате не всегда включают все файлы, присутствующие в более ранних релизах. Правильным решением будет установка всех предлагаемых компонентов.
Особенности
Простота
Процесс инсталляции – как у любой другой программы.
Новые возможности
Запуск приложений, в которых использовалась соответствующая оболочка разработки.
Прямая интеграция
Автоматическая установка в необходимые папки.
Что за программа Microsoft Visual C++
Общая информация о программе
Среда разработки предназначена для написания, проведения тестов и запуска кода. Широкий набор различных утилит, включенных в Visual Studio, позволяет выполнять проектирование и разработку полноценных приложений с использованием графического пользовательского интерфейса без привлечения стороннего ПО. Помимо разработки программ для настольных и десктопных операционных систем, поддерживается разработка веб-приложений.
Без того немалый функционал можно расширить за счет использования сторонних плагинов. В последних версиях приложения большой упор сделан на расширение средств для коллективной разработки. Внесено много улучшений и дополнений для обеспечения эффективной командной работы над проектами любого масштаба.
Функциональные возможности Microsoft Visual Studio
В Visual Studio представлены как стандартные в подобном софте инструменты — отладчик, редактор кода, — так и собственные наработки. Кроме этого, доступны решения сторонних компаний, реализованные в виде подключаемых плагинов. Для повышения продуктивности используются большое количество автоматизированных возможностей: машинные подсказки, автоматическая очистка кода, рефакторинг. Функция IntelliSense позволяет работать с документацией к программе в интерактивном режиме, получая необходимую информацию непосредственно во время написания кода. Как и во всех продуктах от Microsoft, в приложении есть строка умного поиска, благодаря которой найти нужный пункт меню или описание функционала становится значительно легче.
Список основных возможностей и преимуществ выглядит следующим образом:
- собственный компилятор;
- возможность для развертывания приложения собственными средствами;
- редактор кода, включающий в себя инструменты автозавершения и форматирования;
- отладка кода.
Автоматизированные возможности рефакторинга кода, включающего поддержку различных языков, помогают упростить процесс написания кода. В целом, Microsoft Visual Studio является хорошим выбором как для начинающих, так и для разработчиков профессионального уровня.
Разновидности пакетов
Существует несколько версий продукта, в том числе и под разные архитектуры. Как и большинство приложений, Microsoft Visual C++ выпускается для систем 32/ 64bit, и рекомендуется использовать полностью совместимый пакет, чтобы исключить возможные ошибки при работе. На ОС х64 может быть установлена как 32-разрядная (x86), так и 64-разрядная (x64) версия, и в большинстве случаев для запуска игр в таких системах требуется наличие обоих пакетов.
Преимущества и недостатки Microsoft Visual C++
Для чего нужен Microsoft Visual С++:
Представленная среда программирования используется для создания ряда игровых и других приложений, корректная работа которых требует наличия специальных библиотек. Именно поэтому любой пользователь операционной системы вместе с ней должен установить и Microsoft Visual С++ Redistributable. В случае игнорирования такой рекомендации некоторые игры просто не будут запускаться. Папка всех версии с установочными файлами Visual C++ (2005-2015)
Нужны ли старые версии Visual C++?
Инсталляция MSVC++ RP
Процесс установки Visual C++ Redistributable
Условия лицензионного соглашения
Копирование файлов
Установка завершена
Характеристики ПО Visual C++
- Интерфейс: мультиязычный.
- Платформы: x64, x86, Itanium
- Актуальная версия: 14.12.25711.0
- Последняя версия в Visual Studio: 16.2.0
- Вид лицензии: Microsoft EULA
Visual C++ поставляется с различными версиями библиотек runtime C. Это означает, что программисты могут компилировать свой код с помощью любой из доступных им библиотек. Однако последнее может привести к некоторым проблемам при обращении к различным компонентам (*.DLL, *.EXE) в одной и той же программе, но на разных системах, отличающихся набором этих самых библиотек.
Если Вы ищите, где скачать Microsoft Visual C++, то сделать это Вы можете на нашем сайте. У нас Вы сможете данный пакет скачать для Windows 10, для Windows 7/8/10. На нашем сайте представлена самая актуальная версия программы, проверенная нашими экспертами.
С чего начать установку Visual C++?
Также можно скачать все версии одним файлом, что позволит быстро установить Visual C++ запустив на установку один файл, который установит все версии Microsoft Visual C++.
При установке данного пакета, все имеющиеся версии будут переустановлены, а не имеющиеся доустановлены. Что позволит не устанавливать каждый пакет по отдельности, а также избежать разных ошибок при установке по отдельности.
Microsoft Visual С 2005
Поддерживаемая операционная система
- 32-разрядная (x86)
- 64-разрядная (x64, WOW)
- ARM
Windows 10; Windows 7 Service Pack 1; Windows 8; Windows 8.1; Windows Server 2003 Service Pack 2; Windows Server 2008 R2 SP1; Windows Server 2008 Service Pack 2; Windows Server 2012; Windows Vista Service Pack 2; Windows XP Service Pack 3
Microsoft Visual С 2008
Поддерживаемая операционная система
- 32-разрядная (x86)
- 64-разрядная (x64, WOW)
- ARM
Windows 10; Windows 7 Service Pack 1; Windows 8; Windows 8.1; Windows Server 2003 Service Pack 2; Windows Server 2008 R2 SP1; Windows Server 2008 Service Pack 2; Windows Server 2012; Windows Vista Service Pack 2; Windows XP Service Pack 3
Microsoft Visual С 2010
Поддерживаемая операционная система
- 32-разрядная (x86)
- 64-разрядная (x64, WOW)
- ARM
Windows 7; Windows Server 2003 R2 (32-Bit x86); Windows Server 2003 Service Pack 2; Windows Server 2008 R2; Windows Server 2008 Service Pack 2; Windows Vista Service Pack 2; Windows XP Service Pack 3
Microsoft Visual С 2012
Поддерживаемая операционная система
- 32-разрядная (x86)
- 64-разрядная (x64, WOW)
- ARM
Windows 7 Service Pack 1; Windows 8; Windows 8.1; Windows Server 2003; Windows Server 2008 R2 SP1; Windows Server 2008 Service Pack 2; Windows Server 2012; Windows Vista Service Pack 2; Windows XP
Microsoft Visual С 2013
Поддерживаемая операционная система
- 32-разрядная (x86)
- 64-разрядная (x64, WOW)
- ARM
Windows 7 Service Pack 1; Windows 8; Windows 8.1; Windows Server 2003; Windows Server 2008 R2 SP1; Windows Server 2008 Service Pack 2; Windows Server 2012; Windows Vista Service Pack 2; Windows XP
Microsoft Visual С 2015
Поддерживаемая операционная система
- 32-разрядная (x86)
- 64-разрядная (x64, WOW)
- ARM
Windows 10; Windows 7 Service Pack 1; Windows 8; Windows 8.1; Windows Server 2003 Service Pack 2; Windows Server 2008 R2 SP1; Windows Server 2008 Service Pack 2; Windows Server 2012; Windows Vista Service Pack 2; Windows XP Service Pack 3
Microsoft Visual С 2017
Поддерживаемая операционная система
- 32-разрядная (x86)
- 64-разрядная (x64, WOW)
- ARM
Windows 10; Windows 7 Service Pack 1; Windows 8; Windows 8.1; Windows Server 2003 Service Pack 2; Windows Server 2008 R2 SP1; Windows Server 2008 Service Pack 2; Windows Server 2012; Windows Vista Service Pack 2; Windows XP Service Pack 3
Microsoft Visual С 2019
Пакет Microsoft Visual C ++ 2019 включает в себя пакеты 2015, 2017, 2019. При установке данного пакета, установленные пакеты 2015 или 2017 будут заменены.
Поддерживаемая операционная система
- 32-разрядная (x86)
- 64-разрядная (x64, WOW)
- ARM
Windows 10; Windows 7 Service Pack 1; Windows 8; Windows 8.1
Ошибки при установке Microsoft Visual C++
При установке Visual C++ могут встречаться разные ошибки. Рассмотрим способы их устранения
Читайте также: