[Qt-interest] QPluginLoader not loading plugin just by name.

Pritam Ghanghas pritam_ghanghas at infosys.com
Thu Oct 7 10:37:51 CEST 2010


Thanks Brad for detailed info and links. This will solve my problem for
sure. 

On Thu, 2010-09-30 at 12:42 +0530, Brad Hards wrote:
> On Thursday, September 30, 2010 05:10:20 pm Brad Hards wrote:
> > On Thursday, September 30, 2010 01:58:41 am Pritam Ghanghas wrote:
> > > Say I have a plugin named "myplugin.so" in some dir on my filessystem
> > > and that dir is added to LD_LIBRARY_PATH.
> > > 
> > > Shouldn't the following code work?
> > > 
> > > QPluginLoader loader("myplugin.so");
> > > loader.instance();
> > > 
> > > Though the documentation doesn't say anything like that but isn't it a
> > > desirable feature. QLibrary does this.
> > 
> > From http://doc.trolltech.com/latest/plugins-howto.html :
> > Locating Plugins
> > 
> > Qt applications automatically know which plugins are available, because
> > plugins are stored in the standard plugin subdirectories. Because of this
> > applications don't require any code to find and load plugins, since Qt
> > handles them automatically.
> > 
> > During development, the directory for plugins is QTDIR/plugins (where QTDIR
> > is the directory where Qt is installed), with each type of plugin in a
> > subdirectory for that type, e.g. styles. If you want your applications to
> > use plugins and you don't want to use the standard plugins path, have your
> > installation process determine the path you want to use for the plugins,
> > and save the path, e.g. using QSettings, for the application to read when
> > it runs. The application can then call QCoreApplication::addLibraryPath()
> > with this path and your plugins will be available to the application. Note
> > that the final part of the path (e.g., styles) cannot be changed.
> > 
> > If you want the plugin to be loadable then one approach is to create a
> > subdirectory under the application and place the plugin in that directory.
> > If you distribute any of the plugins that come with Qt (the ones located
> > in the plugins directory), you must copy the sub-directory under plugins
> > where the plugin is located to your applications root folder (i.e., do not
> > include the plugins directory).
> [Sorry, slipped before completing this.]
> 
> >From http://doc.trolltech.com/latest/deployment-plugins.html :
> The Plugin Directory
> 
> When the application is run, Qt will first treat the application's executable 
> directory as the pluginsbase. For example if the application is in C:\Program 
> Files\MyApp and has a style plugin, Qt will look in C:\Program 
> Files\MyApp\styles. (See QCoreApplication::applicationDirPath() for how to find 
> out where the application's executable is.) Qt will also look in the directory 
> specified by QLibraryInfo::location(QLibraryInfo::PluginsPath), which typically 
> is located in QTDIR/plugins (where QTDIR is the directory where Qt is 
> installed). If you want Qt to look in additional places you can add as many 
> paths as you need with calls to QCoreApplication::addLibraryPath(). And if you 
> want to set your own path or paths you can use 
> QCoreApplication::setLibraryPaths(). You can also use a qt.conf file to 
> override the hard-coded paths that are compiled into the Qt library. For more 
> information, see the Using qt.conf documentation. Yet another possibility is 
> to set the QT_PLUGIN_PATH environment variable before running the application. 
> If set, Qt will look for plugins in the paths (separated by the system path 
> separator) specified in the variable.
> 
> Brad




More information about the Qt-interest-old mailing list