![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Petr1993 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 4.1.2013 Репутация: нет Всего: нет |
Я создал в Code Blocks'e динамическую библиотеку.
У меня есть файлы *.dll, *.h, *.def. Что я должен сделать чтобы подключить эту библиотеку статически к какому-нибудь проекту? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Petr1993, ничего. Динамическую библиотеку можно подключать только динамически. Для этого достаточно добавить dll в проект (я так понимаю, компилятор у тебя mingw).
|
|||
|
||||
Petr1993 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 4.1.2013 Репутация: нет Всего: нет |
Да, компилятор mingw.
Но разве нельзя подключить библиотеку с неявной компоновкой? |
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: нет Всего: 2 |
если ты о статической компоновке, то: - нужно создать изначально статическую библиотеку (выбирается при создании проекта) - указать путь к ней в том проекте, в который ты хочешь её подключить - собрать проект При этом код библиотеки будет скомпонован вместе с твоим кодом в один бинарник. То есть в случае динамической линковки библиотека хранится в виде отдельного файла (so/dll), в случае статической - она включается в состав самого исполняемого файла. Это сообщение отредактировал(а) NoviceF - 3.5.2013, 12:19 |
|||
|
||||
Petr1993 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 4.1.2013 Репутация: нет Всего: нет |
А что тогда означает явное и неявное подключение динамической библиотеки?
|
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: нет Всего: 2 |
||||
|
||||
Petr1993 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 4.1.2013 Репутация: нет Всего: нет |
Там написано что они отличаються методами доступа к функциям динамической библиотеки.
|
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: нет Всего: 2 |
Чуток нагуглил на тему. По мотивам http://citforum.ru/book/cook/dll0.shtml и другой найденной инфы: "Существует два способа загрузки DLL: с явной и неявной компоновкой. " При загрузке с неявной компоновкой, библиотека загружается до начала выполнения исполняемого файла. При явной компоновке, библиотека подгружается уже во время выполнения программы. Первый вариант, зачастую, можно реализовать настройками проекта, второй же придётся программировать непосредственно в приложении. Причём, насколько мне представляется, второй вариант довольно платформозависимый. В общем по началу намного понятнее, проще и универсальнее использовать только первый способ, это то, что описал выше bsa. |
|||
|
||||
Petr1993 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 4.1.2013 Репутация: нет Всего: нет |
Спасибо.
|
|||
|
||||
bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Загрузить библиотеку во время выполнения под Windows можно так:
При этом в библиотеке должна быть функция:
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |