我正在编写一个需要跨 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/