Chinaunix首页 | 论坛 | 博客
  • 博客访问: 306195
  • 博文数量: 63
  • 博客积分: 1482
  • 博客等级: 上尉
  • 技术积分: 1185
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-12 19:06
个人简介

hello world!

文章分类

全部博文(63)

分类: C/C++

2013-09-08 00:55:51

Qt 5 打包发布64位程序

运行错误  Failed to load platform plugin windows

      

最近,要用Qt 5 + MSVC2012 64bit,打包发布一个程序,先编译了一个测试程序在打包时通过Dependency Walker 查看发布程序所依赖的动态库文件。如下图所示:

clip_image002

Fig1编译环境

       程序打包时,将所需的dll文件:icudt51.dllicuin51.dllicuuc51.dlllibGLESv2.dllIEShims.dllQt5Core.dllQt5Gui.dllQt5Widgets.dll。如果增加了图片等不还需要将Qt\Qt5.1.0\5.1.0\msvc2012_64\plugins目录下的相关插件文件夹直接拷贝进去。如需要程序中需要显示图片则需将imageformats文件夹拷贝至程序目录。

clip_image004

Fig2 Dependency查看依赖库

Dependency查看依赖库,已无缺失dll。但在运行时不能独立运行,用debug版独立运行时会出现下面错误。Failed to load platform plugin windows. Available platforms

clip_image005

Fig3 Failed to load platform plugin windows

       看这问题提示是确少某个动态的dll文件,但是不知道是哪个,后来通过一翻折腾,是缺少libEGL.dll(release)/ libEGLd.dll(debug)

       libEGL为何方大神呢?

libEGL为包裹库,EGL Khronos的渲染API(如OpenGL ESOpenVG)与底层native平台窗口系统(如桌面版Linux中的X WindowMS-Windows中的GDIAndroid中的Frame Buffer等)交互的接口。EGL负责处理图形上下文的管理、surfacebuffer的绑定、渲染同步机制和2D/3D混合渲染。它也支持多媒体系统中的视频帧纹理贴图。也就是说,使用EGL创建图形上下文环境(graphics contexts)和创建用于渲染绘制的surface,然后客户端 APIsclients API,如OpenGL EsOpenVG)可以在surface上进行图形绘制,再使用native的平台渲染API将结果绘制到同步屏幕上 。EGL底层真正实现的API函数指针将存放在egl_t结构体中,上层的EGL调用都将通过egl_t的结构体中的函数指针最终调用到下层的EGL实现。

By Embedded Li

      

阅读(4486) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~