我在Microsoft Visual Studio C ++中创建了一个程序,并使用了SFML。我包含了程序所需的正确.dll文件,并将它们复制到“Release”-Folder中。有效。整个程序在我的计算机上运行完美,但是当我尝试在另一台计算机上运行它时,它说:Missing "MSVCP140.dll"
和Missing "VCRUNTIME140.dll
。
我搜索了这个程序的解决方案,并且总是听到“转到项目>项目设置> C / C ++>代码生成>运行时库>切换到多线程(/ MT)。我编译具有此设置的项目,并且可执行文件的大小增加,他们说这是正常的,因为不再支持.dll文件了。
但是当我再次尝试使用新的.exe时,它给了我完全相同的错误消息。有没有其他可能解决这个问题而不在计算机上安装一些-dll-Files?
答案 0 :(得分:2)
这在MSDN上有详细介绍。见Deployment in Visual C++
你真的有三个选择:
使用DLL的“集中式”版本。为此,您应该有一个运行VS 2015的VCREDIST_*.EXE
包的安装程序,或者如果使用基于MSI的设置,您可以使用提供的MSM文件。
将所需的DLL复制为程序的一部分。这意味着您的安装程序或zip文件或具有EXE的任何内容都包含它所需的DLL。如果您想要“复制并运行”样式部署,这是最佳选择,但请记住,DLL的所有安全服务现在都是您的问题。
使用静态链接。从安全角度来看,这是最不理想的解决方案,实际上只应该用于编写安装程序的特定情况 - 即。安装应用程序的程序必须首先运行。
您尚未指定目标计算机上正在运行的Windows版本。 VS 2015 不支持Windows 7 RTM,因为它不受支持,但它支持Windows 7 Service Pack 1以及Windows Vista Service Pack 2,Windows 8.x和Windows 10。
虽然我们在主题上注意到Windows 8.0也不受支持。这些用户需要升级到Windows 8.1 Update或Windows 10。