crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V  < 1 2 3 4 >  
Ответить в данную темуНачать новую тему
> Использование сторонних библиотек, Как использовать функции из .dll?
Litkevich Yuriy
  опции профиля:
сообщение 22.4.2010, 16:12
Сообщение #11


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(azure @ 22.4.2010, 20:08) *
.lib (это же статическая либа, так ведь?)
как я понял, в случае с GCC
1) при создании статической библиотеки получается один большой a-файл
2) при создании динамической библиотеки получается один большой dll-файл и один крошечный a-файл (являющийся интерфейсом к dll)

Но что это за интерфейс, насколько он обязателен, я не понял
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 22.4.2010, 16:18
Сообщение #12


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(Litkevich Yuriy @ 22.4.2010, 17:12) *
Но что это за интерфейс, насколько он обязателен, я не понял

Если тебе не хочется загружать dll использую что-то типа QLibrary и самому резольвить имена функций, то можно прилинковать эту маленькую библиотеку и все будет происходить автоматически.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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  


Цитата(Litkevich Yuriy @ 22.4.2010, 17:38) *
ага, т.е. если у меня в распоряжении только 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, 21:23) *
а то прям детсад, чесслово!

А мы про венду. ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 22.4.2010, 20:43
Сообщение #17


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(BRE @ 22.4.2010, 23:36) *
А мы про венду. ;)

ну дык то же самое. найдите такую же статью про венду. принципиальных отличий тут нет. а я так понимаю, что тут имеет место именно принципиальное непонимание использования разных типов линковки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 22.4.2010, 20:48
Сообщение #18


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(Iron Bug @ 22.4.2010, 21:43) *
принципиальных отличий тут нет.

Разве.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 22.4.2010, 21:41
Сообщение #19


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(BRE @ 22.4.2010, 23:48) *
Разве.

с точностью до полной аналогии всех функций по работе с динамической загрузкой: загрузил, настроил линки на точки входа и работаешь с ними, потом выгрузил. у динамических библиотек есть спец функции для загрузки и выгрузки. плюс набор "рабочих" функций. что касается модулей, которые нужны для работы с ними - это только стандартные системно-зависимые библиотки по работе с динамическими библиотеками и сами динамические библиотеки. собственно, вот и всё.
а что касается статики - так она просто жёстко линкуется к модулю юзера и тут никаких особенностей нет, собственно. работа как в случае с отдельными объектными модулями. 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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V  < 1 2 3 4 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 16:57