При сравнении Windows, консоли, статических библиотек и DLL в C ++, для чего используются последние два? - PullRequest
0 голосов
/ 26 мая 2011

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

Ответы [ 3 ]

3 голосов
/ 26 мая 2011

Программисты часто обнаруживают, что у них есть некоторый код, который они хотели бы использовать в нескольких программах, или код, который они хотели бы позволить другим программистам использовать. Они могут копировать и вставлять логику в каждую программу или помещать логику в общий заголовок и файлы реализации, которые они включают в каждый проект. Ни один из этих подходов не является ужасно элегантным (или эффективным).

Статические библиотеки являются одним из способов обмена логикой, чтобы другие программы и программисты могли использовать ее. Статическая библиотека - это двоичный файл (часто с расширением .LIB), подходящий для ввода в компоновщик. Программист использует статическую библиотеку, написав код для вызова одной или нескольких функций, реализованных в статической библиотеке, и организуя для компоновщика чтение этого файла статической библиотеки в качестве дополнительного ввода. Во время сборки компоновщик разрешит все ссылки, включая ссылки на функции, реализованные в статической библиотеке. Часто статическая библиотека соединяется с файлом заголовка, который описывает функции, реализованные в библиотеке.

Динамические библиотеки ссылок - это еще один способ поделиться логикой. Динамические библиотеки также являются двоичными файлами (часто с расширением .DLL). В отличие от статических библиотек, библиотеки DLL не используются в качестве входных данных для компоновщика. Вместо этого библиотеки DLL загружаются динамически во время выполнения программы. Библиотеки DLL могут быть явно загружены вызовами LoadLibraryEx и GetProcAddress или неявно загружены при загрузке программы-потребителя.

2 голосов
/ 26 мая 2011

Статическая библиотека - это библиотека, которая входит в ваш двоичный файл. Он называется статическим, потому что он связан с вашей программой при запуске компоновщика. DLL - это динамически связываемая библиотека, поэтому это общий код, который связан с вашей двоичной программой, когда программа загружается в память, а не когда она компилируется и связывается.

1 голос
/ 26 мая 2011

Имена говорят сами за себя - статические библиотеки статичны (вы компилируете их, связанные с помощью компоновщика, и они становятся частью вашей программы), а DLL (динамически связанные библиотеки) динамически связываются во время выполнения по имени файла, затем вы вызываетеих методы.Это внешнее.

...