2

我已经在 Qt OpenGL 项目上工作了一段时间,以完成一些学校工作。我必须为我的 Windows 机器重新构建 Qt 5.0.1,这样我才能正确使用 OpenGL。在这个项目结束时,我需要交出文件和任何可执行文件,所以我想我可以将发布的 .exe 文件粘贴到 .zip 文件中以供使用。

我按照在线说明确保将任何需要的 .dll 放入 .exe 的目录中。我的项目有 10 个:icudt49、icuin49、icuuc49、libEGL、libGLESv2、Qt5Core、Qt5Gui、Qt5OpenGL 和 Qt5Widgets

我把这些文件全部取自:C:\Qt\Qt5.0.1\5.0.1\msvc2010\bin

在我的系统上。

问题是 .exe 将运行,我得到 UI 和所有。但是 OpenGL 场景只是黑色的。我仍然可以单击场景中的对象,显然可以放大和缩小等等。我认为这仍然只是 Qt 翻译命令。但什么都看不见。我不确定问题出在哪里,因为从创建者启动时一切正常。

编辑:因此,对于发布文件夹中的所有dll,从创建者中运行项目也会出现黑屏,当我删除它们时,它运行良好。那么也许其中一个dll是错误的?

另外:我在网上查看了有关使用 Qt Creator 发布的信息,发现没有太多帮助,说我应该从完全静态重建 Qt Creator 开始,但我确信我遵循的指南做到了这一点,但是我仍然无法从构建菜单,所以我坚持使用上述方法。

4

2 回答 2

1

我建议您使用 Dependency Walker ( http://www.dependencywalker.com/ ) 打开 Zip 文件中的每个 DDL。它应该显示有关从您的 QtXXX.dll 文件之一到其他文件的依赖关系的信息。如果缺少其中一个依赖项,您就知道下一步该往哪里看。您也可以尝试使用 Dependency Walker 打开可执行文件。我很长时间没有使用该程序,所以我不记得打开可执行文件是否是它工作的唯一方式。无论如何,以下是您可能想要使用该工具的原因:http: //www.dependencywalker.com/help/html/overview_1.htm

这个问题也可能有帮助:

由于隐式依赖模块中缺少导出函数,至少有一个模块存在未解析的导入

祝你好运!

于 2013-04-26T09:24:34.393 回答
0

所以最终的问题是使用正确的 DLL。使用 DependenyWalker 之类的东西可以帮助您注意哪些 DLL 可能丢失,但在我的情况下它什么也没做。

我已经安装了一次 Qt,并且还重新构建、卸载并重新安装了它。然而,它调用的所有库不再像预期的那样在 C:\Qt\Qt5.0.1\5.0.1\msvc2010\bin 中,而是从我构建它的 github 存储库 C:\Users\User\Documents 调用\GitHub\qt5. 一旦解决了这个问题,它仍然需要一个框架文件夹,然后它可以按预期工作。

1) 将正确的 DLL 文件复制到构建的发布文件夹中。

2) 在与名为“platforms”的 .exe 相同的目录中创建一个文件夹。(注意:其他地方说创建插件>平台,但这不适用于较新的 Qt 版本)

3) 从您获得其他 DLL 的同一来源,将 qwindows.dll 复制到您创建的平台文件夹中。

4)运行可执行文件并享受。

只要您运行的系统能够支持您的 OpenGL 结构,就应该没问题。

于 2013-04-26T21:06:07.280 回答