Russian Qt Forum

Qt => Общие вопросы => Тема начата: Гурман от Июнь 01, 2010, 10:32



Название: найти все динамические библиотеки...
Отправлено: Гурман от Июнь 01, 2010, 10:32
надо найти и загрузить все динамические библиотеки в определенном каталоге, при загрузке вызвать в них определенные функции для инициализации

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

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


Название: Re: найти все динамические библиотеки...
Отправлено: BRE от Июнь 01, 2010, 10:42
Код
C++ (Qt)
    pluginsDir = QDir( "path/to/plugins" );
 
    foreach( QString fileName, pluginsDir.entryList( "*.so", QDir::Files ) )
   {
        QLibrary lib( pluginsDir.absoluteFilePath( fileName ) );
        ...
   }
 


Название: Re: найти все динамические библиотеки...
Отправлено: Гурман от Июнь 01, 2010, 11:02
не годится ни в коем случае, вот из-за этого: "*.so"

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


Название: Re: найти все динамические библиотеки...
Отправлено: BRE от Июнь 01, 2010, 11:11
не годится ни в коем случае, вот из-за этого: "*.so"

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

isLibrary так isLibrary. Это просто пример перебора, вроде как не громоздко получается. :)