QPluginLoader找不到模块

时间:2012-07-16 20:49:13

标签: qt gdal

我为我的应用程序创建了一个插件。如果我不在我的代码中使用GDAL库,我的应用程序可以使用此插件(QPlugin加载它),它工作正常。但是如果我使用GDAL库中的类QPluginLoader无法加载它,errorstring()方法会返回../serverplugin.dll Can't find module

插件DLL中有两个导出的符号qt_plugin_instanceqt_plugin_query_verification_data(我发现它们带有Dependency walker)。 QPluginLoader在内部使用QLibrary类与导出到DLL的C符号进行交互。如果我不使用GDAL,我在开头的所有插件中只有两个导出的符号。当我使用GDAL时,这两个符号会移动到导出符号的大列表的末尾。也许这两个导出的符号应该在开头。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

我遇到了与QPluginLoader相同的问题。简单地说,我是如何解决它的:我创建了一个插件库,比如lib1.dll,它使用lib2.dll中的一些东西。在我的应用程序中,我尝试通过QPluginLoader加载lib1。

QPluginLoader loader( adaptersDir.absoluteFilePath(fileName) );
AdapterInterface* adapterIface = qobject_cast<AdapterInterface*>(loader.instance());

在这种情况下,loader.instance()返回0.解决方法是将lib2.dll复制到应用程序文件夹中,因为应用程序将其用于正确的加载插件lib1。

答案 1 :(得分:0)

exec()