c++ - 您的计算机中缺少 api-ms-win-core-winrt-string-l1-1-0.dll

标签 c++ .net windows visual-studio win-universal-app

我正在编写一个需要跨 Windows 7、8.x 和 10 运行的程序。该程序有一个(相对较小的)功能,该功能依赖于仅在 Windows 10 上可用的 Windows API。该功能显然会在 Win7 上不起作用,在调用这些 API 之前我确保当前操作系统是 Windows 10。

为了使用这些 API,我被迫将 VS2015 项目配置为“使用 Windows 运行时扩展”(/ZW) 并将“目标平台版本”设置为 10.0.10586.0。

但是,当我尝试在 Windows 7 上运行该应用程序时,这会导致问题。我收到一个错误对话框,显示“程序无法启动,因为 api-ms-win-core-winrt-string-l1-1-您的计算机中缺少 0.dll”。我尝试在Win7机器上安装VS2015可再发行包,但这并没有解决问题。

知道如何让它在 Win7 上运行吗?我真的不想更改所有代码来动态加载所有 Windows 10 功能。

该程序是用 C++ 编写的,我使用的 Windows API 来自 Windows.Devices.WifiDirect 命名空间。

最佳答案

我最终通过将所有仅限 Win10 的 API 调用移动到代理 DLL(使用/ZW 编译)中解决了这个问题。然后,我从主程序中删除了/ZW 开关,从而允许它在 Windows 7 下运行。仅当我的程序在 Windows 10 计算机上运行时,才会加载代理 DLL(使用 LoadLibrary() 调用)。

这解决了问题。我确实必须为 DLL 编写一些代理函数,但这比为所有仅限 Win10 的 API 调用这样做的开销要小得多。

我仍然希望听到更好的解决方案(如果有的话)。

关于c++ - 您的计算机中缺少 api-ms-win-core-winrt-string-l1-1-0.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38479251/

相关文章:

c++ - 如何初始化 char*[] 数组?

c++ - strcmp的两种场景

.net - MEF OSGi 是否适用于 .NET?

windows - 如何以编程方式查找两个目录之间的差异

linux - yii2 : use fxp assets plugin or asset-packagist?

node.js - 无法创建新服务: GeckoDriverService

c++ - max_digits10 在引用浮点类型时为 0 有什么好处?

.net - 斯坦福解析器或 dotnet 中的替代品

.net - idleTimeout 和 ShutdownTimeout 之间的区别

c++ - 在C++中,如何在不使用if语句的情况下选择运行特定的成员函数?