1

我正在开发一个动态链接 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。它安装成功,但没有任何改变。

感谢您的时间和帮助!

4

0 回答 0