Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio Qt应用程序在发行版中挂起,调试中未找到vcruntime140.dll,但我的项目正在使用VS2017_Visual Studio_Qt_Deployment_Visual Studio 2015 - Fatal编程技术网

Visual studio Qt应用程序在发行版中挂起,调试中未找到vcruntime140.dll,但我的项目正在使用VS2017

Visual studio Qt应用程序在发行版中挂起,调试中未找到vcruntime140.dll,但我的项目正在使用VS2017,visual-studio,qt,deployment,visual-studio-2015,Visual Studio,Qt,Deployment,Visual Studio 2015,我做的一个应用程序有问题,它在大多数计算机上都运行得很好,但也有一些计算机运行得很好 我试图创建一个最简单的Qt项目(只是一个窗口),并使用windeployqt.exe进行了部署,以确保我没有遗漏一些东西,等等,同样的问题在同一台计算机上,它在以发布模式加载时永远挂起。在那之后,我试图给他发送一个调试版本,但它触发了一个vcruntime140.dll未找到 棘手的是,我使用的是Qt Desktop 5.14.2 MSVC2017 64位,因此我无法想象为什么它要求vcruntime140(v

我做的一个应用程序有问题,它在大多数计算机上都运行得很好,但也有一些计算机运行得很好

我试图创建一个最简单的Qt项目(只是一个窗口),并使用windeployqt.exe进行了部署,以确保我没有遗漏一些东西,等等,同样的问题在同一台计算机上,它在以发布模式加载时永远挂起。在那之后,我试图给他发送一个调试版本,但它触发了一个vcruntime140.dll未找到

棘手的是,我使用的是Qt Desktop 5.14.2 MSVC2017 64位,因此我无法想象为什么它要求vcruntime140(vs2015)也尝试手动安装vs2015 redist windows失败,因为已经存在较新版本


谢谢你给我小费,我快发疯了

我无法告诉您为什么使用MSVC2017生成的构建需要运行vcruntime140,但我建议您通过MSI安装程序分发应用程序。您可以使用WiX工具集()创建一个。开始使用它可能有点困难,但是你可以在互联网上找到很多关于WiX的教程和信息

因此,如果您正在构建安装程序,您可以附加稍后运行应用程序所需的外部资源(合并模块[])。它可能是Microsoft可再发行的软件包。WiX正在使用
.wxs
文件,这些文件基于
xml
结构,因此,例如,在我的一个安装程序中,我向我的安装程序的描述符添加了VC120和VC140资源,如下所示:

<DirectoryRef Id="TARGETDIR">
    <Merge Id="VC120Redist" SourceFile="Microsoft_VC120_CRT_x86.msm" DiskId="1" Language="0"/>
    <Merge Id="VC140Redist" SourceFile="Microsoft_VC140_CRT_x86.msm" DiskId="1" Language="0"/>
</DirectoryRef>
<Feature Id="VC120Redist" Title="Visual C++ 13 Runtime" AllowAdvertise="no" Display="hidden" Level="1">
    <MergeRef Id="VC120Redist"/>
</Feature>
<Feature Id="VC140Redist" Title="Visual C++ 15 Runtime" AllowAdvertise="no" Display="hidden" Level="1">
    <MergeRef Id="VC140Redist"/>
</Feature>

通过这种方法,安装程序可以管理Microsoft资源,并且您无需担心是否每个客户端pc都安装了正确的软件包


创建好的
.wxs
文件并不容易,但从长远来看,这是值得的。

我无法告诉您为什么使用MSVC2017生成的构建需要运行vcruntime140,但我建议您通过MSI安装程序分发应用程序。您可以使用WiX工具集()创建一个。开始使用它可能有点困难,但是你可以在互联网上找到很多关于WiX的教程和信息

因此,如果您正在构建安装程序,您可以附加稍后运行应用程序所需的外部资源(合并模块[])。它可能是Microsoft可再发行的软件包。WiX正在使用
.wxs
文件,这些文件基于
xml
结构,因此,例如,在我的一个安装程序中,我向我的安装程序的描述符添加了VC120和VC140资源,如下所示:

<DirectoryRef Id="TARGETDIR">
    <Merge Id="VC120Redist" SourceFile="Microsoft_VC120_CRT_x86.msm" DiskId="1" Language="0"/>
    <Merge Id="VC140Redist" SourceFile="Microsoft_VC140_CRT_x86.msm" DiskId="1" Language="0"/>
</DirectoryRef>
<Feature Id="VC120Redist" Title="Visual C++ 13 Runtime" AllowAdvertise="no" Display="hidden" Level="1">
    <MergeRef Id="VC120Redist"/>
</Feature>
<Feature Id="VC140Redist" Title="Visual C++ 15 Runtime" AllowAdvertise="no" Display="hidden" Level="1">
    <MergeRef Id="VC140Redist"/>
</Feature>

通过这种方法,安装程序可以管理Microsoft资源,并且您无需担心是否每个客户端pc都安装了正确的软件包


创建好的
.wxs
文件并不容易,但从长期来看,这是值得努力的。

今天发布了Qt 5.15,将我的Qt依赖项从5.14.2升级到5.15。修复了问题,它在Qt版本中没有标记为错误修复,但我的问题已经消失。

今天发布了Qt 5.15,升级了我的Qt依赖项从5.14.2到5.15修复了问题,Qt版本中没有将其标记为错误修复,但我的问题已消失。

windeployqt
包括
vc\u redist。
部署文件夹中的可执行文件,当我将应用程序部署到其他Windows PC时,有时我会得到代码的错误声明:vcRunTeM140.DLL< /Cuff>和其他MS Visual C++可重新分配DLL。我只是运行包含的可执行文件,比如64位操作系统的vc_redist.x64.exe。。并且通常问题已经解决;我理解目标PC可能已经有了更新版本的redistrib。。但我一直认为新的通常是向后兼容的,尽管如此,我认为Qt包含了应用程序编译时所需的正确redisreb。

windeployqt
包括部署文件夹中的vc\u redist。可执行文件,当我将应用程序部署到其他Windows PC时,有时我会得到代码的错误声明:vcRunTeM140.DLL< /Cuff>和其他MS Visual C++可重新分配DLL。我只是运行包含的可执行文件,比如64位操作系统的vc_redist.x64.exe。。并且通常问题已经解决;我理解目标PC可能已经有了更新版本的redistrib。。但我一直认为新的通常是向后兼容的,尽管如此,我认为Qt包含了应用程序编译时所需的正确Redireb。

我使用的是nsis,但没有任何运气,请注意,即使手动安装vc2015 redist也无法解决问题。您是否尝试将vcruntime140.dll放置在有问题的操作系统的exe目录中?手动部署vc运行时是一种非常糟糕的做法(我也不确定是否合法),我知道,但只是为了确保问题是由缺少此dll引起的。那么您已经将正确的msm文件添加到nsis安装程序了吗?VSRedist和debug的问题是缺少的dll是调试版本,但在发布时正确加载。在发行版中仍然处于冻结状态,Microsoft Procmon没有显示任何问题。我正在使用nsis,但没有任何运气,请注意,即使手动安装vc2015 redist也无法解决问题。您是否尝试将vcruntime140.dll放在有问题的操作系统的exe目录中?手动部署vc运行时是一种非常糟糕的做法(我也不确定这是否合法)我知道,但只是为了确认问题是由缺少此dll引起的。因此,您已将正确的msm文件添加到nsis安装程序?VSRedist和debug的问题是缺少的dll是调试版本,但在发布时正确加载。在发布时仍然冻结,Microsoft Procmon没有显示任何问题
vcruntime140.dll
不应在调试中使用,因此在混合调试库和发布库时,似乎存在库冲突。在调试中,它应为
vcruntime140d.dll
。相关:Visua