• 1776阅读
  • 10回复

求助:打包以后,有的时候弹出缺少opengl,有的时候正常 [复制链接]

上一主题 下一主题
离线wangjianxyz
 

只看楼主 倒序阅读 楼主  发表于: 2021-07-12

我的程序是运行在win下面,我打包的方式,就是把exe和一堆dll放到一个文件夹里面,双击exe打开。

部分的时候,能正常运行;但是,有的时候,会弹出缺少opengl对话框,打开失败;再试一次,可能又好了。

我是Qt5.9.7,32位。系统是win10 64位。






离线wangjianxyz

只看该作者 1楼 发表于: 2021-07-12
有的时候出,有的时候不出,这个现象很奇怪、
在线fsu0413

只看该作者 2楼 发表于: 2021-07-22
线程?
离线wangjianxyz

只看该作者 3楼 发表于: 2021-07-23
回 fsu0413 的帖子
fsu0413:线程? (2021-07-22 08:08) 

是说有的时候,子线程启动的太快了?opengl的库还没有载入?
离线wanger233

只看该作者 4楼 发表于: 2021-07-23
有个库openglsw32.dl 你在qt安装里 搜一下丢环境里l
在线fsu0413

只看该作者 5楼 发表于: 2021-07-24
回 wangjianxyz 的帖子
wangjianxyz:是说有的时候,子线程启动的太快了?opengl的库还没有载入? (2021-07-23 14:01) 

UI只能在主线程用
离线wangjianxyz

只看该作者 6楼 发表于: 2021-08-20
回 fsu0413 的帖子
fsu0413:UI只能在主线程用 (2021-07-24 08:32) 

现在情况又有变化了。我在qtcreator里面,启动程序,有时也会启动失败。再来一次又好了。

我的Qt是5.9.7

qt creator打印如下:

createContext: wglCreateContextAttribsARB() failed (GL error code: 0x0) for format: QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::SwapBehavior(DoubleBuffer), swapInterval 1, profile  QSurfaceFormat::OpenGLContextProfile(NoProfile)), shared context: 0x0 (操作成功完成。)
createContext: wglCreateContext failed. (操作成功完成。)
Unable to create a GL Context.
Failed to create OpenGL context for format QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::SwapBehavior(DoubleBuffer), swapInterval 1, profile  QSurfaceFormat::OpenGLContextProfile(NoProfile)) .
This is most likely caused by not having the necessary graphics drivers installed.

Install a driver providing OpenGL 2.0 or higher, or, if this is not possible, make sure the ANGLE Open GL ES 2.0 emulation libraries (libEGL.dll, libGLESv2.dll and d3dcompiler_*.dll) are available in the application executable's directory or in a location listed in PATH.
14:25:46: D:/share/htinventgit/output_exe/MonitorAgv-exe/MonitorAgvVer3 exited with code 3

离线lixinwei

只看该作者 7楼 发表于: 2021-08-20
有没有可能是Qt 5.9的bug?换成Qt 5.12和5.15会不会发生类似现象?
有没有可能是电脑的问题?换其他电脑是否会有类似现象?
离线wangjianxyz

只看该作者 8楼 发表于: 2021-08-26
我是发帖人,我总结一下。

最开始的时候,我的Qt程序打包给别人以后,偶尔会出现opengl的提示;

我根据网上的提示,在代码里,加上了  “qputenv("QT_OPENGL", "software");”
加上以后,我自己这边其实没感觉到变化的;

就在几天前,我换了新电脑,然后,问题突然变的严重了。
我用qt creator编译运行程序,都会出现opengl的提示,非常影响编译效率;
几乎是运行3次就得有一次运行失败,出现opengl的提示;







离线wangjianxyz

只看该作者 9楼 发表于: 2021-08-26
我试着新建了一个工程, 连续运行10次,都是正常的,没有报opengl的提示。
然后我又去折腾代码。最终发现,把“qputenv("QT_OPENGL", "software");” 去掉就可以了。
去掉以后,我这边用qt creator编译运行是没问题的。至于,以后打包会不会再出问题,还需要观察。


离线liudianwu

只看该作者 10楼 发表于: 2021-08-26
qputenv("QT_OPENGL", "software")应该是相当于QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);
欢迎关注微信公众号:Qt实战 (各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发)QQ:517216493  WX:feiyangqingyun  QQ群:751439350
快速回复
限100 字节
 
上一个 下一个