c++ - 使用 Qt 显示 JPG 图像不适用于发布可执行文件

标签 c++ qt release executable jpeg

我在用 qt 显示 jpg 图像时遇到了一个恼人的问题。我在 Windows 7 中使用 Visual Studio 2008 开发并使用 Qt 4.8.2 版。我现在将通过 Qt 提供的“collidingmice”示例 (../examples/graphicsview/collidingmice) 来描述我的问题。

我可以通过 Visual Studio IDE 或通过 Visual Studio 命令提示符构建此示例。在此示例中,一个 jpg 用作背景,并在我执行调试可执行文件时正确显示。但在发布版本中,此背景 jpg 未显示。

我已经意识到,Qt 使用插件来加载/显示不同的图像。因此,我将Qt插件文件夹的内容复制到应用程序目录(collidingmice.exe所在的位置)。不幸的是,这并不能解决问题。

因此,我认为 Qt 构建和 jpeg 库一定有问题。因此,我通过在 Visual Studio 命令提示符下执行以下命令来重新配置 Qt:

nmake distclean
configure -debug-and-release -opensource -platform win32-msvc2008 -qt-libjpeg -no-webkit
nmake

之后重建了示例,但 jpg 图像还是没有显示。我不确定问题出在哪里,因为它在调试版本和发布版本中都有效,我想我只需要提供所需的插件 DLL。但显然我是不对的。

我希望任何人都可以帮助我,或者可以给我一些提示,说明问题出在哪里。谢谢!

最佳答案

Therefore I copied the contents of the plugin folder of Qt into the application directory (where collidingmice.exe is).

您需要将插件放入“imageformats”子目录中,例如喜欢

bin
 ├── collidingmice.exe
 └── imageformats
       ├── qjpeg4.dll
       ├ ...

另见 http://www.qtcentre.org/threads/46927-Location-of-imageformats-directory


原来OP已经设置好了目录结构。根本原因是加载了错误的 QtGui4.dll。这可以通过将 DLL 直接复制到应用程序目录或通过更改 PATH 环境变量中的路径顺序来修复,以便您的 Qt bin 目录位于包含 QtGui4.dll 的所有其他路径的前面。 "

无论如何,Process Monitor是追踪此类问题的好工具。

关于c++ - 使用 Qt 显示 JPG 图像不适用于发布可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12800346/

相关文章:

c++ - QML 无法将 Shared_ptr<Track> 分配给 [未知属性类型]

javascript - 如何在 QML 中的 50 个文本字段之间切换焦点?

objective-c - 遍历 NSMutableArray 对象。最佳实践

iphone - 对象释放速度不够快,导致应用重新启动崩溃

c++ - 为 qt 安装小部件

c++ - 在 MSVC 中编译 constexpr 代码时出现 "err:seh:setup_exception stack overflow"

c++ - 在 Qt 中捕获音频信号

android-studio - 安卓工作室 : release apk is not signed

c++ - 使用 boost asio 时如何获取 UDP 远程端点?

c++ - 单击某个项目时禁用自动滚动