crossplatform.ru

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

> Использование сторонних библиотек, Как использовать функции из .dll?
azure
  опции профиля:
сообщение 22.4.2010, 11:52
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 24.12.2009
Пользователь №: 1332

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




Репутация:   0  


Вопрос не столько по кросплатформенности, сколько по Qt + .dll в винде. Имеется девайс (pci-карта gpib) с драйверами и .dll + .h с функциями работы с устройством. dll идут под MS Visual C++ и Borland C++ Builder. Можно ли использовать эти .dll без использования вышеуказанных компиляторов? Конкретно интересует gcc/mingw? Если можно, то как?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Iron Bug
  опции профиля:
сообщение 23.4.2010, 13:52
Сообщение #2


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

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

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




Репутация:   12  


Цитата(BRE @ 23.4.2010, 15:21) *
Iron Bug, ты все динамические библиотеки загружаешь руками с помощью LoadLibrary и получаешь адреса их функций? Или все таки есть такие, которые "кто-то" загружает за тебя (например msvcrt.dll)? А как происходит процесс линковки таких библиотек?

msvcrt загружает только основной модуль. он прикрепляет к юзерскому коду заголовок для загрузчика и прописывает основную точку входа(но и это можно сделать вручную, если нужно). остальные загрузки по ходу работы - см. приведённый код. динамическая загрузка вызовом LoadLibrary(она вызывается из Kernel32.dll), по которому в системе происходит загрузка библиотеки в память и вызов внутреннего метода библиотеки init (под вендой название точно не помню, но если сам пишешь dll, которой нужна инициализация - то его надо писать вручную, а если нет - то компилятор по типу собираемого модуля dll сам его прилепит, сгенерировав по умолчанию). после вызова этой функции и линковки точек входа библиотека готова к работе. и неважно, каким компилятором она собрала. если имена точек входа указаны без декораций(а для этого прописывается файл экспорта при сборке библиотеки), то это работает. и даже если пересобрать библиотеку, добавить что-то, то ничего не изменится, пока указанные имена входов и их параметры остались теми же.
производители аппаратуры так и делают, чтобы расширять свои библиотеки для новых версий. потому что иначе после каждого апдейта зависимый код пришлось бы перекомпилять из-за линковки по номерам входов. а так, один раз написал, отправил юзеру и пускай он себе обновляет дрова - для модуля ничего не изменится, пока интерфейс совместим.

Сообщение отредактировал Iron Bug - 23.4.2010, 13:56
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- azure   Использование сторонних библиотек   22.4.2010, 11:52
- - Litkevich Yuriy   Цитата(azure @ 22.4.2010, 15:52) Можно ли...   22.4.2010, 12:16
|- - azure   Спасибо за подробные указания. Как узнать, сделана...   22.4.2010, 12:29
- - Litkevich Yuriy   Цитата(azure @ 22.4.2010, 16:29) "по...   22.4.2010, 12:58
- - Влад   Посмотри экспорты этой DLL (например, утилитой Dep...   22.4.2010, 13:00
- - Tonal   Можно использовать dll-ку собранную одним компилят...   22.4.2010, 13:03
- - Litkevich Yuriy   Цитата(Влад @ 22.4.2010, 17:00) Если в эк...   22.4.2010, 13:40
- - Iron Bug   Цитата(Litkevich Yuriy @ 22.4.2010, 16:40...   22.4.2010, 14:39
- - Litkevich Yuriy   я имел в виду "возможно ли на этапе компиляци...   22.4.2010, 15:49
|- - azure   Цитата(Litkevich Yuriy @ 22.4.2010, 15:49...   22.4.2010, 16:08
- - Litkevich Yuriy   Цитата(azure @ 22.4.2010, 20:08) .lib (эт...   22.4.2010, 16:12
|- - BRE   Цитата(Litkevich Yuriy @ 22.4.2010, 17:12...   22.4.2010, 16:18
- - Litkevich Yuriy   ага, т.е. если у меня в распоряжении только dll...   22.4.2010, 16:38
|- - BRE   Цитата(Litkevich Yuriy @ 22.4.2010, 17:38...   22.4.2010, 16:47
- - Iron Bug   люди, у меня такое ощущение, что у вас в голове си...   22.4.2010, 20:23
|- - BRE   Цитата(Iron Bug @ 22.4.2010, 21:23) а то ...   22.4.2010, 20:36
- - Iron Bug   Цитата(BRE @ 22.4.2010, 23:36) А мы про в...   22.4.2010, 20:43
|- - BRE   Цитата(Iron Bug @ 22.4.2010, 21:43) принц...   22.4.2010, 20:48
- - Iron Bug   Цитата(BRE @ 22.4.2010, 23:48) Разве. с т...   22.4.2010, 21:41
- - BRE   венда/линукс под рукой есть? Сделай небольшой прим...   22.4.2010, 21:45
- - Iron Bug   ну вот тебе кусок из реального проекта. весь не пр...   22.4.2010, 23:36
|- - BRE   Мы говорим про венду! Посмотри внимательно, чт...   23.4.2010, 6:29
- - Litkevich Yuriy   Цитата(BRE @ 23.4.2010, 10:29) dll нельзя...   23.4.2010, 8:27
|- - BRE   Цитата(Litkevich Yuriy @ 23.4.2010, 9:27)...   23.4.2010, 8:57
- - Tonal   В винде не все линкеры умеют пользоваться символам...   23.4.2010, 9:02
- - Iron Bug   Цитата(BRE @ 23.4.2010, 9:29) Мы говорим ...   23.4.2010, 11:56
- - BRE   Iron Bug, ты все динамические библиотеки загружаеш...   23.4.2010, 12:21
- - Iron Bug   Цитата(BRE @ 23.4.2010, 15:21) Iron Bug, ...   23.4.2010, 13:52
|- - BRE   Цитата(Iron Bug @ 23.4.2010, 14:52) и нев...   23.4.2010, 14:07
- - Iron Bug   Цитата(BRE @ 23.4.2010, 17:07) А кто прик...   23.4.2010, 14:29
|- - BRE   Цитата(Iron Bug @ 23.4.2010, 15:29) я зна...   23.4.2010, 14:46
- - Iron Bug   я вообще-то изначально отвечала на исходный вопрос...   23.4.2010, 17:57
|- - Tonal   Цитата(Iron Bug @ 23.4.2010, 21:57) ну ту...   26.4.2010, 7:48
- - Litkevich Yuriy   Тему разделил: Сборка библиотеки под ОС Symbian   23.4.2010, 20:48


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




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