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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: найти все динамические библиотеки...  (Прочитано 2472 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« : Июнь 01, 2010, 10:32 »

надо найти и загрузить все динамические библиотеки в определенном каталоге, при загрузке вызвать в них определенные функции для инициализации

предполагал, что будет достаточно сделать вызов какого-нибудь системно-независмого QtFindFirst, получить первый файл, приложить к его имени QLibrary::isLibrary, если подходит, загрузить, найти нужную точку входа, если не нашлась выгрузить, если нашлась, вызвать ее, и потом каким-нибудь QtFindNext найти следующий файл и т.д....

но пока облом - не вижу готовой пары FindFirst/FindNext, а использовать имеющиеся средства, например, QDir::entryInfoList - как-то громоздко получается... или я не вижу в упор нужных мне методов, или их вообще нет, и можно сделать только с помощью entryInfoList ?
Записан

2^7-1 == 127, задумайтесь...
BRE
Гость
« Ответ #1 : Июнь 01, 2010, 10:42 »

Код
C++ (Qt)
    pluginsDir = QDir( "path/to/plugins" );
 
    foreach( QString fileName, pluginsDir.entryList( "*.so", QDir::Files ) )
   {
        QLibrary lib( pluginsDir.absoluteFilePath( fileName ) );
        ...
   }
 
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #2 : Июнь 01, 2010, 11:02 »

не годится ни в коем случае, вот из-за этого: "*.so"

код мультиплатформенный, поэтому загрузка всего каталога, и перебор всех имен на предмет isLibrary
Записан

2^7-1 == 127, задумайтесь...
BRE
Гость
« Ответ #3 : Июнь 01, 2010, 11:11 »

не годится ни в коем случае, вот из-за этого: "*.so"

код мультиплатформенный, поэтому загрузка всего каталога, и перебор всех имен на предмет isLibrary

isLibrary так isLibrary. Это просто пример перебора, вроде как не громоздко получается. Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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