C运行时库加载不正确-QT

时间:2014-02-12 20:44:13

标签: qt visual-c++ manifest redistributable

我有一个QT应用程序,它使用依赖于2008 C ++ MSVCR90.dll的LIB。 当我部署我的应用程序时,在某些计算机上出现以下错误: screenshot

我该如何解决这个问题? 有人提到我,如果我包含一个清单文件,这应该会有所帮助。所以我准备了以下清单文件:

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="*" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>
<。>在.pro文件中我添加了以下内容:

CONFIG += embed_manifest_exe
win32:CONFIG(release, debug|release) {
 QMAKE_POST_LINK = $$quote(C:/Program Files (x86)/Windows Kits/8.1/bin/x64/mt.exe -nologo -manifest \"ISHEmulauncher.exe.manifest\" -outputresource:$(DESTDIR_TARGET);1)
 }
 else:win32:CONFIG(debug, debug|release) {
 QMAKE_POST_LINK = $$quote(C:/Program Files (x86)/Windows Kits/8.1/bin/x64mt.exe -nologo -manifest \"ISHEmulauncher.exe.manifest\" -outputresource:$(DESTDIR_TARGET);1)
 }

但是创建的清单与我准备的清单不同,并且不包括VS90依赖关系,因此我仍然面临同样的错误。

有什么建议吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

Redistributables非常讨厌管理。通常我需要做的是在每个部署机器上运行MSVC C ++可再发行组件安装程序(作为安装过程的一部分)以避免此错误。

这篇文章可能会对情况有所了解:

http://msdn.microsoft.com/en-us/library/ms235299(v=vs.90).aspx

https://qt-project.org/doc/qt-5.0/qtdoc/deployment-windows.html#application-dependencies

我试图从我的开发机器上获取正确的dll,然后将其部署到我的应用程序文件夹中。如果您不介意安装可再发行软件包的安装程序中有另一个步骤,则以下链接应该有所帮助。

http://www.microsoft.com/en-us/download/details.aspx?id=29

http://www.microsoft.com/en-us/download/details.aspx?id=26368

此外,如果您的应用程序编译为32位,则只需要32位可再发行组件。如果您在x64中编译了应用程序,则需要64位可再发行组件。

相关:

Qt5 Deployment on Windows

希望有所帮助。

答案 1 :(得分:0)

我通过取消选中QT中的“阴影构建”选项解决了这个问题。 之后,我没有忽略我定义的清单文件,并正确加载了库。