3

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

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

还有问题:

  • 静态链接的插件有可能吗?
  • 如果不是,是否可以动态链接插件(应用程序的其余部分仍然与 Qt 静态链接)?
  • 如果没有,有可能吗?
4

1 回答 1

4

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

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.

手册指出:

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

于 2011-11-16T12:58:23.310 回答