Здесь ничего не происходит ... Пожалуйста, свяжитесь с нами, если обнаружите ошибку.
1. Есть ли разница между «Библиотекой времени выполнения C / C ++» и «Стандартной библиотекой C / C ++»?
Да и нет. Иногда люди используют библиотеку времени выполнения для обозначения всего и вообще игнорируют стандартную библиотеку (для инструментов Microsoft). Однако технически библиотека времени выполнения загружается во время выполнения, поэтому она включает пару .lib (import lib) и .dll. Подробнее см. Здесь: http://msdn.microsoft.com/en-us/library/vstudio/abx4dbyh(v=vs.100).aspx
Технически libc * - стандартные библиотеки, а * crt - библиотеки времени выполнения.
2. Как узнать, связана ли библиотека «C / C ++ Runtime Library» с проектом статически или динамически?
Если вы используете IDE (VS2010, другие похожи), это находится в свойствах проекта:
- configuration properties
- c/c++
- code generation
[Runtime Library]
3. Как узнать, где находится эта библиотека в файловой системе?
Файлы lib находятся в каталоге lib вашего SDK (если вы установили более позднюю версию SDK для Windows) или в каталоге Visual C ++.
4. В случае, если «Библиотека времени выполнения C / C ++» динамически связана с проектом, как я могу узнать, какой «.dll» используется и где в файловой системе находится используемый «.dll»?
Вы можете выяснить, какие из них используются, с помощью инструмента зависимостей. http://www.dependencywalker.com/
Библиотеки DLL находятся где-то в каталоге Windows. Они перемещают их, и теперь они находятся в забавных местах с манифестами и прочим, чтобы отслеживать версию. Я бы не стал слишком об этом беспокоиться. Если вам нужно об этом беспокоиться, возможно, что-то не так. Для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/windows/desktop/aa375365(v=vs.85).aspx http://en.wikipedia.org/wiki/Side-by-side_assembly
Если это вызывает беспокойство, вы можете связать распространяемый пакет со своим установщиком: Разница между распространяемым пакетом Visual Studio и Visual Studio SP1
5. Предположим, что я статически привязываю «Библиотеку времени выполнения C / C ++» к проекту, могу ли я быть уверен, что исполняемый файл, созданный из исходного кода, будет работать на всех платформах Windows (XP / Vista / Seven / ..., 32 бит / 64 бит)?
Да, если вы связываете статически, тогда вы в большей безопасности с точки зрения невозможности найти dll. Однако это увеличивает размер исполняемого файла. Есть и другие последствия с точки зрения поведения ... Трудно перечислить, но разница заключается в том, что библиотека находится в dll, а не скомпилирована в ваш exe.
6. Каковы преимущества / недостатки динамического связывания «библиотеки времени выполнения C / C ++» с проектом?
Зачем использовать dll:
а - размер. меньший размер exe, потому что все библиотечные материалы находятся в dll, которые, как предполагается, уже установлены в системе пользователя, хотя иногда это не так.
б - Если в среде выполнения есть ошибки, Microsoft может отправить пользователю новую версию. Вам не нужно иметь с этим дело. Если вы статически ссылаетесь, вам нужно отправить пользователю новый exe.
Почему бы не использовать dll:
a - много проблем с работой с dll. Если вы забудете связать Redist, может появиться много проблем.
b - наличие большего количества dll для загрузки и выгрузки приводит к более медленному запуску и выходу.
Наверное, по другим причинам, о которых я не подумал ...
7. Следует ли связывать «библиотеку времени выполнения C / C ++» с проектом статически или динамически?
Это действительно зависит от обстоятельств. Я лично предпочитаю статическую связь. Ненавижу возиться в поисках правильного redist / dll / и т. Д.
person
thang
schedule
07.02.2013
vc_redists
, так что у меня нет причин не ожидать, что он / может быть установлен. - person Bartek Banachewicz   schedule 07.02.2013