使用 Visual Studio 生成的 exe 在其他电脑上创建 dll 错误

Posted

技术标签:

【中文标题】使用 Visual Studio 生成的 exe 在其他电脑上创建 dll 错误【英文标题】:exe generated with Visual Studio creates dll errors on other pc's 【发布时间】:2018-02-05 11:32:42 【问题描述】:

我用 Visual Studio 编写了一个程序,我想与一些朋友分享。但是,当获取包含我的 .exe 文件的调试文件夹的完整文件夹并将其发送给朋友时,它会引发 3 个错误: 缺少 vcruntime140.dll 缺少 MSVCP140D.dll 缺少 urctbased.dll (顺序可能不正确) 我们尝试在 this 页面上重新安装/更新 Microsoft Visual C++ Redistributable 2017 x64,但没有任何积极结果。 这可能是一个问题,我正在使用 SDL2 库吗?我将 SDL2.lib 复制到他们的 Syswow64 文件夹和 system32 文件夹中,这删除了特定的 .dll 错误,但首先出现了其他错误。

【问题讨论】:

选择“静态链接 C++ 运行时库”选项。这样就不会有对可再分发组件的依赖。此外,向您的朋友发送 release 版本。 @Bathsheba 静态链接可能是一种解决方案,但如果有其他解决方案,我宁愿不要放大我的程序的大小。由于不是发布版本,错误是否可能仅存在? ....D.dll 结尾的DLLS 是调试版本,不应(不能)重新分发。作为旁注,将 DLL 放入系统目录应该在 Windows XP 之前停止。将它们放入您的应用程序文件夹和/或运行 redist 安装包。如果另一个应用尝试安装/使用不同版本的 SDL2 会发生什么? 很有可能——尽管您也可以静态链接调试运行时。 除了 Richard Critten 的评论:在发布配置中构建您的项目,以便在其他计算机上使用。 【参考方案1】:

在构建项目之前选择 Realese 选项,然后将整个 Release 文件夹发送给您的朋友应该可以解决此问题。

【讨论】:

不——不包括 VC++ DLL 的 @MSalters 你是对的。它只会摆脱特定于调试的 DLL 问题。

以上是关于使用 Visual Studio 生成的 exe 在其他电脑上创建 dll 错误的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 不生成.vshost.exe和.pdb文件的方法

区分 cl.exe 生成的 32 位和 64 位 PE 对象文件(Visual Studio C++)

Visual Studio 2010 生成的.exe文件默认放在哪个文件夹?

怎样用visual studio 2010生成所有电脑可执行的.exe文件?

wsdl.exe 能否生成与 Visual Studio 添加 Web 引用时相同的文件?

visual studio 2005 生成出来的exe无法执行??