Использование сторонних библиотек, Как использовать функции из .dll? |
Здравствуйте, гость ( Вход | Регистрация )
Использование сторонних библиотек, Как использовать функции из .dll? |
Litkevich Yuriy |
22.4.2010, 16:12
Сообщение
#11
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
.lib (это же статическая либа, так ведь?) как я понял, в случае с GCC1) при создании статической библиотеки получается один большой a-файл 2) при создании динамической библиотеки получается один большой dll-файл и один крошечный a-файл (являющийся интерфейсом к dll) Но что это за интерфейс, насколько он обязателен, я не понял |
|
|
BRE |
22.4.2010, 16:18
Сообщение
#12
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
Litkevich Yuriy |
22.4.2010, 16:38
Сообщение
#13
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
ага, т.е. если у меня в распоряжении только dll'ка, то компиляция пройдёт успешно. Но прежде чем использовать содержимое dll'ки мне нужно будет воспользоваться классом QLibrary, так?
|
|
|
BRE |
22.4.2010, 16:47
Сообщение
#14
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
ага, т.е. если у меня в распоряжении только dll'ка, то компиляция пройдёт успешно. Но прежде чем использовать содержимое dll'ки мне нужно будет воспользоваться классом QLibrary, так? Да, ни при компиляции, ни при запуске программа не будет жестко связанна с этой dll, она будет как плагин. Но для доступа к ее функциям, необходимо будет ее загрузить и получить указатели на функции. |
|
|
Iron Bug |
22.4.2010, 20:23
Сообщение
#15
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
люди, у меня такое ощущение, что у вас в голове сильная каша по поводу lib(a), dll(so) и прочего такого. почитайте основы про статическую и динамическую линковку и про то, как системы их используют и для чего нужны эти файлы.
ну вот хотя бы тут почитайте (первый попавшийся ресурс на эту тему, из гугла): http://www.yolinux.com/TUTORIALS/LibraryAr...AndDynamic.html а то прям детсад, чесслово! |
|
|
BRE |
22.4.2010, 20:36
Сообщение
#16
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
Iron Bug |
22.4.2010, 20:43
Сообщение
#17
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
|
|
|
BRE |
22.4.2010, 20:48
Сообщение
#18
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
Iron Bug |
22.4.2010, 21:41
Сообщение
#19
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
Разве. с точностью до полной аналогии всех функций по работе с динамической загрузкой: загрузил, настроил линки на точки входа и работаешь с ними, потом выгрузил. у динамических библиотек есть спец функции для загрузки и выгрузки. плюс набор "рабочих" функций. что касается модулей, которые нужны для работы с ними - это только стандартные системно-зависимые библиотки по работе с динамическими библиотеками и сами динамические библиотеки. собственно, вот и всё. а что касается статики - так она просто жёстко линкуется к модулю юзера и тут никаких особенностей нет, собственно. работа как в случае с отдельными объектными модулями. lib делается из obj и принципиально они ничем не отличаются, кроме доп. описаний входов. P.S. правда, у линюкса чуть более гибкая система подгрузки динамических библиотек. можно управлять тем, как именно будут подгружаться библиотеки: сразу при вызове загрузки или только тогда, когда произойдёт явное обращение к входу из этой библиотеки. но это не меняет принципиальной схемы работы. Сообщение отредактировал Iron Bug - 22.4.2010, 21:47 |
|
|
BRE |
22.4.2010, 21:45
Сообщение
#20
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
венда/линукс под рукой есть?
Сделай небольшой пример и собери из него статическую библиотеку и динамическую библиотеку. Посмотри, какие файлы и какого размера при этому будут сгенерированы. Цитата P.S. правда, у линюкса чуть более гибкая система подгрузки динамических библиотек. можно управлять тем, как именно будут подгружаться библиотеки: сразу при вызове загрузки или только тогда, когда произойдёт явное обращение к входу из этой библиотеки. но это не меняет принципиальной схемы работы. А потом можно будет поговорить про ld.so и для чего вместе с .dll генерируется небольшой .lib (.a) файл. Сообщение отредактировал BRE - 22.4.2010, 21:55 |
|
|
Текстовая версия | Сейчас: 22.11.2024, 11:31 |