Russian Qt Forum
Сентябрь 30, 2024, 18:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: DLL на Windows и Linux  (Прочитано 5530 раз)
radislav72
Гость
« : Май 09, 2011, 07:12 »

Есть проект dll (с названием holidays). На Windows в результате компиляции получается файл holidays.dll, который и можно использовать в программе (и там все ОК). На Linux, насколько я понимаю, должен получиться файл holidays.so, но его нет, хотя компиляция проходит успешно. Зато получается какойто-файл libholidays.so

Как должен называться файл библиотеки на Linux?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Май 09, 2011, 07:36 »

libholidays.so
Записан

Юра.
radislav72
Гость
« Ответ #2 : Май 09, 2011, 08:11 »

Спасибо за ответ.

А можно ли переименовать получившийся файл в holidays.so- ведь в проекте программ (использующих dll) при линковке используется ето имя:
Код:
QLibrary lib("holidays");

Или нужно в самих прогах, использующих dll, юзать имя libholidays, и под Windows перекомпилить либу с именем  libholidays.dll?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Май 09, 2011, 09:18 »

На линуксе (маке) gcc -l$NAME ищет библиотеку с именем lib$NAME.so (lib$NAME.dylib)
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Май 09, 2011, 09:56 »

radislav72 тыб описание класса QLibrary почитал
Цитировать
For example, after successfully loading the "GL" library on Unix platforms, fileName() will return "libGL.so". If the file name was originally passed as "/usr/lib/libGL", fileName() will return "/usr/lib/libGL.so".
« Последнее редактирование: Май 09, 2011, 09:59 от lit-uriy » Записан

Юра.
radislav72
Гость
« Ответ #5 : Май 09, 2011, 10:32 »

radislav72 ты б описание класса QLibrary почитал

Спасибо, привык к точному указанию имен в Виндовс и даже в голову не пришло такое простое...
Записан
radislav72
Гость
« Ответ #6 : Май 11, 2011, 06:57 »

Были еще проблемы с тем, что в Windows dll находится автоматически, а в Linux- нет (dll расположена в папке программы). Может кому интересно будет: решилось таким образом:

1. В pro- файл библиотеки додал строчку
Код:
CONFIG += plugin
Для того, чтобы на Линуксе не создавались ссылки на библиотеку, а собрался один нужный файл .so

2. При загрузке библиотеки указывал точный путь, так как по умолчанию в Виндовс папка программы сканируется на наличие библиотеки, а в Линукс- нет (там используется системная папка по умолчанию)
Код:
QLibrary lib(QApplication::applicationDirPath() + "/" +  + "holidays");

Может, у кого замечания по правильности подхода будут...
« Последнее редактирование: Май 11, 2011, 08:27 от radislav72 » Записан
alex12
Гость
« Ответ #7 : Май 11, 2011, 15:07 »

LD_LIBRARY_PATH
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 23.