Статические библиотеки, динамические библиотеки, библиотеки DLL, точки входа, заголовки ... как выбраться из этого живым? - PullRequest
7 голосов
/ 24 апреля 2009

Мне недавно пришлось программировать C ++ под Windows для проекта университета, и я довольно запутался в системе статических и динамических библиотек, что нужно компилятору, что нужно компоновщику, как создать библиотеку ... есть ли хороший документ об этом там? Я также довольно озадачен системой библиотек * nix (так, dylibs, инструмент ar, как их скомпилировать ...), можете ли вы указать обзорный документ о текущих методах библиотек на различных архитектурах?

Примечание: из-за моего плохого знания это сообщение может содержать неправильные понятия, не стесняйтесь редактировать его.

Спасибо

Не стесняйтесь добавлять дополнительные ссылки, я добавлю их в резюме.


Ссылки

Поскольку большинство из вас опубликовали * ссылки для nix или Windows, я перечислю здесь лучшие из них, и я отмечу принятый ответ в Википедии, потому что он является хорошей отправной точкой (и содержит ссылки внутри), чтобы познакомиться с этим. прочее.

Руководство по библиотеке программ (Unix)

Динамически подключаемые библиотеки (из MSDN) (Windows)

Информация DLL (StackOverflow) (Windows)

Программирование на C (Unix)

Обзор компиляции и компоновки (Windows)

Ответы [ 4 ]

2 голосов
/ 24 апреля 2009

Вы можете найти некоторую справочную информацию из этой статьи здесь . Это дает вам базовый фон. Я пытаюсь найти что-то с помощью диаграмм. Это должно быть хорошим местом для начала.

Принципиальные различия между статической библиотекой и библиотекой DLL заключаются в том, что со статической библиотекой код компилируется в конечный исполняемый файл, тогда как библиотека динамической компоновки включает в себя соединение в библиотеке «заглушки» (в вашем приложении), которая содержит сопоставления с функциями. в отдельном файле (.dll).

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

Только что нашел этот сайт , который охватывает определения практически всех аспектов, которые вы цитировали.

2 голосов
/ 24 апреля 2009

Начните с Википедия - там много информации и множество ссылок на другие полезные ресурсы.

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

1 голос
/ 24 апреля 2009

Всегда есть MSDN для вещей, связанных с Windows: Главная страница для dlls -> http://msdn.microsoft.com/en-us/library/ms682589

Для Unix мой любимый справочник: Программирование на C, системные вызовы и подпрограммы UNIX с использованием C -> http://www.cs.cf.ac.uk/Dave/C/

RM

1 голос
/ 24 апреля 2009
...