使用 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文件?