我一直在做一个Qt OpenGL项目,现在一些学校的工作。我不得不为我的windows机器重新构建Qt 5.0.1,这样我才能正确使用OpenGL。在这个项目结束时,我需要交出文件和任何可执行文件,所以我想我可以把发布的。exe放在。zip中使用。
我遵照网上的指示,确保我把所有需要的。dll文件放入。exe文件的目录中。对于我的项目,有10个:icudt49, 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静态开始,但我确信我所遵循的指南做到了这一点,但是我仍然不能从构建菜单中发布,所以我坚持使用上面的方法。
我建议您使用Dependency Walker (http://www.dependencywalker.com/)打开Zip文件中的每个ddl。它应该显示从一个QtXXX.dll文件到其他文件的依赖信息。如果缺少某个依赖项,您就知道下一步该去哪里查找。您也可以尝试使用Dependency Walker打开可执行文件。我没有使用该程序很长一段时间,所以我不记得如果打开一个可执行文件是它唯一的工作方式。无论如何,以下是您可能想要使用该工具的原因:http://www.dependencywalker.com/help/html/overview_1.htm
这个问题可能也有帮助:
至少有一个模块由于隐式依赖模块中缺少导出函数而存在无法解析的导入
祝你好运!
所以最终的问题是使用正确的dll。使用像DependenyWalker这样的工具可以帮助您注意可能丢失的dll,但是在我的情况下它什么也没做。
我已经安装了一次Qt,也重建,卸载和重新安装它。然而,它所调用的所有库都不再像预期的那样在C:QtQt5.0.15.0.1msvc2010bin中,它是从我构建它的github存储库中调用的C: users users documents github qt5.一旦这个被整理出来,它仍然需要一个框架文件夹,然后它就像预期的那样工作了。
1)将正确的DLL文件复制到构建的发布文件夹。
2)在与。exe相同的目录下创建一个名为"platforms"的文件夹。(注意:其他地方说创建插件>平台,但这将不适用于较新的Qt版本)
3)从相同的来源获得其他dll,将qwindows.dll复制到您创建的平台文件夹中。
4)运行可执行文件并享受。
只要你运行的系统能够支持你的OpenGL结构,就应该没问题。