使用 QtPlugin 部署 Qt 控制台应用程序
Deploying Qt console application with QtPlugin
上下文:
我目前正在使用 Qt 开发多平台服务器端控制台应用程序。
我有一台开发计算机 (pc-dev) 和一台要部署我的应用程序的服务器 (pc-server)。
pc-dev 配置了所有开发工具(gcc、Qt5、cmake 等),但 pc-server 没有所有这些工具。
两者都运行 CentOs 7。
我的应用程序使用插件来加载一些扩展其功能的文件。
我的问题:
由于我的控制台应用程序不使用 QtGui / QtWidgets 模块,我不想依赖它们(好吧,你会说这很正常)
当我编译我的 QtPlugin 时,生成的 *.so 文件依赖于 Qt5Gui.so(由 ldd myfile.so
确认),所以当我部署我的应用程序时,加载失败,因为 Qt5Gui.so 是失踪。
我不明白为什么我有这种依赖性,因为我的插件不使用 gui 功能。
它只是提供了获取版本/文件名/和一些访问权限的方法。
唯一包含的文件是 "QtPlugin".
有什么想法吗?
谢谢
我找到了解决方案:
我在 *.pro 文件中有:
QT += core
TARGET = MyPlugin
TEMPLATE = lib
CONFIG += plugin
似乎默认包含 "gui" 模块,所以:
QT -= gui
解决了问题。
上下文:
我目前正在使用 Qt 开发多平台服务器端控制台应用程序。 我有一台开发计算机 (pc-dev) 和一台要部署我的应用程序的服务器 (pc-server)。 pc-dev 配置了所有开发工具(gcc、Qt5、cmake 等),但 pc-server 没有所有这些工具。 两者都运行 CentOs 7。 我的应用程序使用插件来加载一些扩展其功能的文件。
我的问题:
由于我的控制台应用程序不使用 QtGui / QtWidgets 模块,我不想依赖它们(好吧,你会说这很正常)
当我编译我的 QtPlugin 时,生成的 *.so 文件依赖于 Qt5Gui.so(由 ldd myfile.so
确认),所以当我部署我的应用程序时,加载失败,因为 Qt5Gui.so 是失踪。
我不明白为什么我有这种依赖性,因为我的插件不使用 gui 功能。 它只是提供了获取版本/文件名/和一些访问权限的方法。 唯一包含的文件是 "QtPlugin".
有什么想法吗?
谢谢
我找到了解决方案: 我在 *.pro 文件中有:
QT += core
TARGET = MyPlugin
TEMPLATE = lib
CONFIG += plugin
似乎默认包含 "gui" 模块,所以:
QT -= gui
解决了问题。