【发布时间】:2016-07-20 10:52:41
【问题描述】:
我正在编写一个需要在 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 命名空间。
【问题讨论】:
-
这真的是关于 C# 还是 C++?您使用的 API 是什么?可能有一种适用于经典桌面应用程序的解决方案。
-
仅限 Windows 10 应用程序的明显限制。不管你的善意是什么,都行不通。
-
C# 程序的一个很好的特性是它只在您使用它们的代码时才加载 DLL。最好用 [MethodImpl(MethodImplOptions.Noinlining)] 装饰方法。但显然你不是在谈论 C#,/ZW 选项是 C++/CX 编译选项。从 C# 调用 WinRT/UWP 方法也很容易,但是您必须手动编辑项目文件以添加所需的
<TargetPlatformVersion>元素。现在添加对 WinRT 库的引用。 -
对不起,我忘了说这是一个 C++ 程序。我使用的 Windows API 来自 Windows.Devices.WifiDirect 命名空间。
-
@HansPassant,您的建议解决方案是否适用于 C++ 项目?我不确定我是否理解你的提议。
标签: c++ .net windows visual-studio win-universal-app