无法在另一台未安装 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 Projects
2- 将安装项目添加到您的VS solution
3-将你的程序添加到安装项目中
4-选择项目的主要输出
5- 如您所见,visual studio 检测所有 dll 依赖项
【讨论】:
以上是关于无法在另一台未安装 VS2017 的机器上运行使用 VS2017 构建的 C++ 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Oracle Dll 加载错误:无法在另一台机器上运行 C# 控制台应用程序
C++:Cookie 不存储在一台机器上,而是存储在另一台机器上