Mul*_*deR 7 c++ windows-xp visual-studio windows-7 visual-studio-2017
将我的一些程序从VS2015移植到VS2017之后注意到二进制文件不再在Windows 7或Windows XP上运行 - 即使它们已经使用v141_xp工具集编译.该程序无法启动丢失的DLL api-ms-win-core-rtlsupport-l1-2-0.dll(注意2).
我很清楚那些api-ms-win-*DLL属于UCRT,从VS2015开始,我必须从Windows 10 SDK(可Redist\ucrt\DLLs在Windows 10 SDK目录中找到)重新分发UCRT DLL ,以及我的应用程序 - 只需重新分配vcruntime140.dll和msvcp140.dll是不足够的.但只有api-ms-win-core-rtlsupport-l1-1-0.dll在我的Windows SDK目录中,但没有 api-ms-win-core-rtlsupport-l1-2-0.dll.我刚刚下载并重新安装了最新的Windows SDK(10.0.15063).仍然没有相关的DLL!
我还尝试通过VC_redist.x86.exe从Visual Studio网站(14.11.25325)下载的最新版本在Windows 7(或XP)机器上安装VS2017 Redistributable软件包.显然,将api-ms-win-*DLL 复制到"System32"目录中.但是,只是api-ms-win-core-rtlsupport-l1-1-0.dll,但不是 api-ms-win-core-rtlsupport-l1-2-0.dll.应用仍然无法启动: - /
有任何想法吗?
谢谢和最诚挚的问候,
MuldeR
[编辑]
这当然只适用于我链接DLL运行时(/MD).如果我链接到"静态"运行时(/MT)我得到一个二进制文件,在UCRT 上没有 DLL依赖,并在Windows 7和XP上运行正常.
[编辑#2]
请参考我的其他帖子(包括EDIT)来解决这个问题:https:
//stackoverflow.com/a/45773325/1766377
好的,这很有意思:刚才我的VS2017发现了一个新的更新.显然,我的VS2017从v15.2升级到v15.3.1.看来,运行时库也已更新!
现在有2个目录,VC\Redist\MSVC\14.11.25325 和 VC\Redist\MSVC\14.11.25415我的VS2017里面安装目录.将vcruntime140.dll在两个目录存在.但较新版本(25415,右)与旧版本(25325,左)相比具有完全不同的依赖关系:
只有"新"版本具有Windows 7中缺少的依赖项.因此,我应该使用"旧"版本.但这意味着我已经锁定了"旧"版本.这是正常的吗?
(BTW:从VS2017两个DLL版本v15.3.1是较新的一个比我原来把从v15.2)
此致,
MuldeR
[编辑]
所以,这只是引起了我的注意,有一个微妙的区别VC\Redist\MSVC\14.11.25325 和 VC\Redist\MSVC\14.11.25415目录:该目录25415具有内部调用另一个子文件夹中的所有DLL文件onecore,另外一个没有.显然,这意味着"较新的"DLL版本(具有onecore子文件夹的版本)不应该与普通的桌面应用程序一起重新分发; 它们严格用于"OneCore"移动/物联网平台.
结论:
M $在设计Redist目录结构方面做得很好,尽可能让人感到困惑.把"正常"的版本号,并在该目录层次结构的同一级别的"onecore"可再分发(而不是独立的onecore,并desktop在目录上是水平)表明,这些目录代表了不同版本的同一件事-这是不是案件: - /
*/onecore/*使用普通桌面应用程序重新分发任何DLL!| 归档时间: |
|
| 查看次数: |
9572 次 |
| 最近记录: |