OpenGL Widget在创建者中工作,但从.exe启动时是黑色的

时间:2013-04-25 00:53:39

标签: qt opengl qt-creator qt5

我一直在为一些学校工作做一点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开始,但我确定我所遵循的指南做了这个,但是我仍然无法从构建菜单发布,所以我坚持使用上述方法。

2 个答案:

答案 0 :(得分:1)

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

这个问题可能也有帮助:

At least one module has an unresolved import due to a missing export function in an implicitly dependent module

祝你好运!

答案 1 :(得分:0)

所以最终的问题是使用正确的DLL。使用像DependenyWalker这样的东西可以帮助你记下哪些DLL可能会丢失,但在我的情况下它什么也没做。

我已经安装了一次Qt,并且还重建,卸载并重新安装了它。但是它所调用的所有库都不再按照预期在C:\ Qt \ Qt5.0.1 \ 5.0.1 \ msvc2010 \ bin中调用,它是从我构建它的github存储库调用C:\ Users \ User \ Documents \ GitHub的\ QT5。一旦整理出来,它仍然需要一个框架文件夹,然后它按预期工作。

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

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

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

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

只要您运行的系统具有OpenGL结构,就可以了。