计算机系统应用教程网站

网站首页 > 技术文章 正文

Qt Deployment查找Plugin过程

btikc 2025-01-07 11:05:25 技术文章 17 ℃ 0 评论


当查找plugins的时候,application首先会寻找当前executable下的plugins子目录。你要么通过把plugins完完整整拷贝到当前,要么就通过设置DESTDIR


除此之外你可以在代码层通过追加额外目录来让application进行查找,通过对QApplication::addLibraryPath() / QApplication::setLibraryPaths()


从Qt 5开始所有的Qt GUI程序都会要求一个事先Qt Platform Abstraction(QPA)层的插件(对于兼容性非常糟糕,保守的说法是只能适应用他来做开发的Qt版本,因此他的API change就是简简单单的minor release,比如5.1 -> 5.2,不会有第三位),在Linux/X11下这个插件的名字叫libqxcb.so(在Windows下脚qwindows.dll https://doc.qt.io/qt-5/windows-deployment.html).这个文件必须放在一个确定的目录(默认情况下是在你exe目录的platforms下 经典的Qt Sharedlibrary & Plugin部署关系图).除此之外比如你的程序用到JEPG或者SQL Dirver等plugin,也应该把他放在你的目录下比如imageformats, sqldrivers. 当然你也可以通过如下关系去调整这个search path.


传统的Qt Plugins的search path是被hard-code禁QtCore library. 默认情况下第一个查找路径是/path/to/Qt/plugins. 不过使用默认路径往往会有一些不方便的地方,比如权限问题等,因此你可能需要一些其他方法:

  • 通过使用qt.conf来修改对应的目录和arguments Qt中qt.conf的作用
  • 通过hard-code设置QApplication::addLibraryPath() / QApplication::setLibraryPaths()
  • 通过使用第三方的安装工具来改变Qt Core中hard-code的paths
  • 如果你的程序是Release,你的Plugin也应该是Release

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表