无法在另一台未安装 VS2017 的机器上运行使用 VS2017 构建的 C++ 应用程序

Posted

技术标签:

【中文标题】无法在另一台未安装 VS2017 的机器上运行使用 VS2017 构建的 C++ 应用程序【英文标题】:Not able to run C++ application built with VS2017 on another machine where VS2017 is not installed 【发布时间】:2020-03-18 11:43:38 【问题描述】:

我在 Windows 10 机器上安装了 VS2017,我正在其中构建我的 C++ 代码。当构建成功时,我可以在同一台机器上运行该 exe。但是,当我在另一台未安装 VS2017 的 winodws 10 机器上复制该 exe(以及所有相关的 DLL)时,会出现错误“由于找不到 urctbase.dll,代码执行无法继续”

我将这些 dll(ucrtbase.dll vcrutime140.dll 等)复制到 exe 所在的同一位置并尝试运行它然后给出错误 “应用程序无法正确启动(0xc700000b)。单击确定关闭应用程序”

我安装了 VC Redistributable-2017 软件包以在该机器上设置运行时环境,但问题仍然存在。

谁能帮忙解决这个问题?

【问题讨论】:

您可以使用Dependency Walker 确保您已经考虑了所有 DLL 依赖项。 你可以使用dependency walker来获取更多关于加载依赖的信息 不要复制 dll,但要正确安装它们:support.microsoft.com/en-us/help/2977003/… 此类问题的一个原因是在目标机器上复制或安装 DEBUG 版本,而不是 RELEASE 版本。与调试相关的 DLL 不是 VC Redistributable 2017 软件包的一部分。 另请注意,VC 可再发行组件有单独的 32 位和 64 位版本。 【参考方案1】:

很难获得程序的所有相关 DLL。我建议您创建可以检测所有这些依赖项的setup project

0- 将您的项目置于release 模式1- 从here 安装Microsoft Visual Studio Installer Projects2- 将安装项目添加到您的VS solution

3-将你的程序添加到安装项目中

4-选择项目的主要输出

5- 如您所见,visual studio 检测所有 dll 依赖项

【讨论】:

以上是关于无法在另一台未安装 VS2017 的机器上运行使用 VS2017 构建的 C++ 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Oracle Dll 加载错误:无法在另一台机器上运行 C# 控制台应用程序

在另一台电脑上运行exe文件

C++:Cookie 不存储在一台机器上,而是存储在另一台机器上

为啥我的 Perl 程序在一台机器上得到污染警告,而在另一台机器上却没有?

php 在一台机器上解析失败,但在另一台机器上解析失败

在另一台机器上模拟本地用户