首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QPluginLoader找不到模块

QPluginLoader找不到模块
EN

Stack Overflow用户
提问于 2012-07-17 04:49:13
回答 2查看 1.3K关注 0票数 0

我为我的应用程序创建了一个插件。如果我没有在我的代码中使用GDAL库,我的应用程序可以使用这个插件(QPlugin加载它),并且它工作得很好。但是,如果我使用GDAL库中的类,QPluginLoader就不能加载它,并且errorstring()方法返回../serverplugin.dll Can't find module

在插件DLL中有两个导出的符号qt_plugin_instanceqt_plugin_query_verification_data (我在依赖遍历中找到了它们)。QPluginLoader在内部使用QLibrary类与导出到DLL的C符号进行交互。如果我不使用GDAL,那么在开始的所有插件中我只有两个导出的符号。当我使用GDAL时,这两个符号被移到一个很大的导出符号列表的末尾。也许这两个导出的符号应该在开头。

我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2012-10-29 06:42:06

我和QPluginLoader也有同样的问题。简而言之,我是如何解决这个问题的:我创建了一个插件库,比如说lib1.dll,它使用了lib2.dll中的一些东西。在我的应用程序中,我尝试通过QPluginLoader加载lib1。

代码语言:javascript
运行
复制
QPluginLoader loader( adaptersDir.absoluteFilePath(fileName) );
AdapterInterface* adapterIface = qobject_cast<AdapterInterface*>(loader.instance());

在本例中,loader.instance()返回0。解决方案是将lib2.dll复制到应用程序文件夹中,因为应用程序使用它来正确加载插件lib1。

票数 3
EN

Stack Overflow用户

发布于 2020-11-14 09:25:57

代码语言:javascript
运行
复制
QT_BEGIN_NAMESPACE
#define Plugin_iid "Plugin"
Q_DECLARE_INTERFACE(PluginInterface,Plugin_iid)
QT_END_NAMESPACE 

Q_PLUGIN_METADATA(IID "PluginInterface" FILE "Plugin.json")
Q_INTERFACES(PluginInterface)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11512314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档