Запрос на хорошие учебные пособия по программированию dll

В прошлом, когда я пытался создавать плагины для нескольких приложений. Это всегда файлы dll, и я следил за инструкциями в документации к SDK различных приложений, но я никогда не понимал, что я делаю. Чтобы исправить это, я попытался найти любой ресурс, который больше связан с некоторыми практическими аспектами программирования на С++, включая работу с dll, список с моей головы:

  • dll файлы, для чего они используются и почему?
  • зачем использовать DLL файлы над libs?
  • что это .def файл все, это только Microsoftsoft?
  • что такое файл манифеста для?
  • ...

В принципе, все эти прекрасные опции, которые можно увидеть в среде IDE (Visual Studio и XCxcode для меня) - как узнать, что они собой представляют и как использовать их в сочетании с кодом, немного сложнее, чем писать "привет" мирового применения? Наверное, я ищу более "архитектурный вид" для программирования. Самое большее, что я нашел до сих пор во всех моих книгах на С++, - это то, что всегда есть раздел о source code > object code > linked w/ other obj code > executable но что до него.

Итак, есть ли хорошие книги для кого-то, кто хочет узнать больше, чем просто синтаксис С++? Я знаю о коде, я знаю об объектной ориентации, я знаю о STL. Мне нужна хорошая книга или ресурс для следующего шага.

Спасибо! (и извините, если это немного неопределенный вопрос, но он пришел к этому)

Ответ 1

DLL файлы, для чего они используются и почему?

Файлы

dll идентичны файлам .exe в Microsoft Windows (за исключением 1 бит в заголовке, говорящем, что это DLL). Память dlls совместно используется любой программой, использующей ее, сохраняя память. Dll можно загружать и выгружать из ОЗУ по требованию, экономя память. Также они могут быть обновлены индивидуально без необходимости перекомпилировать EXE (для которых у вас может не быть доступного исходного кода.)

зачем использовать DLL файлы над libs?

libs, также известный как статические библиотеки, требует, чтобы exe был перекомпилирован каждый раз, когда происходит изменение, Dlls нет. Dlls сохранить память, если несколько процессов используют их и могут быть обновлены для всех программ из централизованного расположения. Для libs вам придется перекомпилировать и заменить каждый .exe индивидуально. Dll - дополнительные файлы, которые ДОЛЖНЫ быть включены в exe, поэтому dll могут быть плохими для распространения в Интернете.

, что этот файл .def, о чем это только Microsoft:

A.def - это специфический для компилятора файл, который сообщает компилятору, как DLL (API) должна быть выложена в памяти. Их можно найти во многих разных компиляторах, включая gcc, хотя поддерживаемые функции и синтаксис отличаются.

что такое файл манифеста для?

манифест является новым для Windows XP с пакетом обновления 3 (SP3), в основном он указывает Windows, какие версии системных библиотек ему нужны, а также если двоичный файл требует прав администратора. (Помните, что dll - это просто exe с одним битом другого). Я считаю, что manfest также используется при подписи кода, проверяя, является ли исполняемый файл законным.

Ответ 2

Существует отличный article в CodeProject для программирования DLL на С++.