我正在开发一个动态链接 Qt、boost 和 Assimp 的 C++ 应用程序。我使用 /MD 在发布模式下编译它,它在我的计算机上运行良好。但是,如果我尝试在另一台机器上运行它,我会收到 0xc000007b 错误(应用程序无法正确启动)。我在两台机器上都使用 Windows 8.1,但 Qt5.3 和 VisualStudio2013 只安装在第一台机器上。
我建立了提升
bootstrap.bat
b2 variant=release
然后我使用 Cmake GUI 为 Assimp 配置/生成解决方案,我后来使用 Visual Studio 2013 构建了该解决方案。Qt(32 位版本)是通过在线安装程序安装的。所以一切(包括我的应用程序)都是用 32 位目标构建的。
我复制到另一台机器的文件夹包括:
- 我的应用程序
- 平台/
- 无障碍/
- assimp.dll
- icudt52.dll
- icuint52.dll
- icuuc52.dll
- kernel32.dll
- opengl32.dll
- libEGL.dll(在 Qt/5.3/msvc2012_opengl/ 中找不到)
- libGLESv2.dll(相同)
- msvcp1XX.dll
- msvcr1XX.dll
- 我需要的 Qt 库(Core、GUI、Widgets、OpenGL)
如果我从 Qt/5.3/msvc2012_opengl/ 复制这些 .dll/文件夹,则应用程序需要 msvcp110.dll 才能启动。如果我添加并运行它,我会收到 0xc000007b 错误。但是为什么是 msvcp110.dll 而不是 msvcp120.dll ???
如果我从 Qt/tools/QtCreator 复制文件,应用程序实际上需要 msvcp120.dll 才能运行。但是当它运行时,它一开始就崩溃了:
QEGLplatformContext::init: eglError: 3005, this: 0x2e806b0
我想这是正常的,因为你不应该从这个位置复制它们。
有谁知道我做错了什么?
PS:在运行我的应用程序之前,我还在没有 VS2013 的机器上运行了 vcredist_x86.exe。它安装成功,但没有任何改变。
感谢您的时间和帮助!