Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: radislav72 от Май 09, 2011, 07:12



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

Как должен называться файл библиотеки на Linux?


Название: Re: DLL на Windows и Linux
Отправлено: lit-uriy от Май 09, 2011, 07:36
libholidays.so


Название: Re: DLL на Windows и Linux
Отправлено: radislav72 от Май 09, 2011, 08:11
Спасибо за ответ.

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

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


Название: Re: DLL на Windows и Linux
Отправлено: Авварон от Май 09, 2011, 09:18
На линуксе (маке) gcc -l$NAME ищет библиотеку с именем lib$NAME.so (lib$NAME.dylib)


Название: Re: DLL на Windows и Linux
Отправлено: lit-uriy от Май 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".


Название: Re: DLL на Windows и Linux
Отправлено: radislav72 от Май 09, 2011, 10:32
radislav72 ты б описание класса QLibrary почитал

Спасибо, привык к точному указанию имен в Виндовс и даже в голову не пришло такое простое...


Название: Re: DLL на Windows и Linux
Отправлено: radislav72 от Май 11, 2011, 06:57
Были еще проблемы с тем, что в Windows dll находится автоматически, а в Linux- нет (dll расположена в папке программы). Может кому интересно будет: решилось таким образом:

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

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

Может, у кого замечания по правильности подхода будут...


Название: Re: DLL на Windows и Linux
Отправлено: alex12 от Май 11, 2011, 15:07
LD_LIBRARY_PATH