无法让 QtPrintSupport 工作
Posted
技术标签:
【中文标题】无法让 QtPrintSupport 工作【英文标题】:Cannot get QtPrintSupport To Work 【发布时间】:2015-07-17 03:08:59 【问题描述】:我已经尝试了几十种不同的实现。棘手的问题是打印对话框会在我的开发机器上显示并正常工作,但是当我构建 .msi 文件并部署到另一台机器时,打印按钮实际上什么也没做。它应该使用来自适当 ui 的信息呈现一个图形,我已经排除它不正确地使用 qwt 库,因为(即使我似乎无法让它在除开发机器之外的任何其他机器上正确安装) 使用 qwt 库制作的图形在程序安装后正确呈现,只是打印按钮起作用。
据我所知,以下是我的 .pro 文件中与任何链接或可能的打印问题有关的重要行:
QT += core gui sql printsupport network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = static-control-panel
TEMPLATE = app
symbian: LIBS += -lftd2xx
else:unix|win32: LIBS += -L$$quote($$PWD/lib/) -lftd2xx \
-L$$quote($$PWD/lib/) -lqwt
INCLUDEPATH += $$quote($$PWD/include)
DEPENDPATH += $$quote($$PWD/include)
CONFIG += qwt
在实际具有打印按钮的 .cs 文件中,我尝试过 #include <QtPrintSupport>
、#include "QtPrintSupport"
、#include "QtPrintSupport/QPrintDialog"
、#include <QtPrintSupport/QPrintDialog>
以及任何其他可能的变化。
我正在使用 WiX 和烛光构建项目。 WiX 是一种简单的标记语言,它将指定要包含在 .msi 文件中的文件,并且 PrintSupport 包含与任何其他包含的库相同。
我也尝试了 AdvancedInstaller 并收到了相同的结果。
在将应用程序安装到另一台机器上后,我尝试用较新版本的 .dll 文件替换安装目录中的 .dll 文件,并使用来自开发机器的相同旧版本,以防它们不是使其进入.msi。使用旧的 .dll,我得到了相同的无响应按钮。使用新的 .dll 会导致应用程序抱怨找不到正确版本的 .dll 并崩溃,这在我替换 qwindows.dll 时尤其重要,我猜 .dll 不向后兼容?
当我构建它时,我看不到任何指定将包含在 WiX 文件中的 .dll 文件的版本。可能与 qwt 和 QtPrintSupport 的版本控制有关吗?任何对此问题的见解将不胜感激,如果有任何不清楚或需要更多代码示例或信息,请随时提出,感谢您的考虑。
【问题讨论】:
【参考方案1】:您可以使用名为 Orca 的工具检查 .msi 包中包含的文件的版本。 Orca 是 Windows 安装程序 SDK 的一部分。要安装 Orca,您必须下载最新的 Windows SDK 并选择要安装的特定可选组件(我不记得要选择获取 Orca 的确切可选组件,我记得不需要安装完整的 Windows SDK)
安装 Orca 后,在 Orca 中打开您的 msi 包并导航到“文件”表。搜索您的特定文件并查看所包含文件的版本。
-我建议您做的另一件事是生成详细的安装程序日志。 请看一下
http://blogs.msdn.com/b/astebner/archive/2005/03/29/help-me-help-you-if-you-have-setup-bugs.aspx
日志将为您提供有关文件是否被复制的信息以及可能对您有所帮助的任何其他信息。
-第三件事,我建议您弄清楚是否所有依赖项都已到位。
如果您熟悉 SysInternals 套件中名为“ProcMon”的工具,您可以在此工具中为所有依赖的 dll 文件设置过滤器。然后,ProcMon 可以向您指示是否找不到任何依赖项。
-您可能要确认的第四件事是是否需要任何特殊操作才能使其正常工作。例如注册 dll、创建任何特殊的注册表项等。
看看你能不能想出点办法,然后我们就可以把它推进。
【讨论】:
终于哇! ProcMon 做到了,感谢您提出如此出色的工具。它能够指出这个困扰我几个月的简单问题......就像我一样小心,打印功能的安装文件夹是printersupport,而程序正在寻找printsupport(没有'er')我重命名了该文件夹,它立即在安装了以前版本的机器上运行。再次感谢您的建议,以后遇到类似问题的人,必须使用 ProcMon 或其他类似工具来找出丢失的 dll 问题。 很高兴堆栈溢出社区对您有所帮助。以上是关于无法让 QtPrintSupport 工作的主要内容,如果未能解决你的问题,请参考以下文章
遇到问题--python---ImportError: Missing optional dependency ‘xlrd‘. Install xlrd >= 1.0.0 for Excel supp
遇到问题--python---ImportError: Missing optional dependency ‘xlrd‘. Install xlrd >= 1.0.0 for Excel supp