在运行时检查Qt插件的依赖性

时间:2011-11-16 09:20:00

标签: qt plugins oci

这就是我所拥有的:我的应用程序是用Qt 4.5静态编译的。我正在使用qsqloci插件(静态链接),它动态加载oracle库(oci.dll,...)。

我希望能够检查是否存在oracle DLL,并根据结果使用插件功能与否。

问题:

  • 这个插件是否可以静态链接?
  • 如果没有,可以动态链接插件(应用程序的其余部分仍然静态链接到Qt)?
  • 如果没有,是否可以呢?

1 个答案:

答案 0 :(得分:4)

您可以使用QLibrary检查DLL是否可用。

加载库后,您将加载插件,而不是开始使用QLibrary::resolve

QLibrary lib("oci"); // QLibrary will try the platform's library suffix
if (! lib.load()) {
  qDebug() << "Library load error:" << lib.errorString();
  return;
}
// load plugin

您无法使用QPluginLoader加载插件,因为您是静态链接,但您应该可以使用QLibrary

manual州:

  

请注意,如果您的应用程序与Qt静态链接,则无法使用QPluginLoader。在这种情况下,您还必须静态链接到插件。如果需要在静态链接的应用程序中加载动态库,则可以使用QLibrary。