在 Windows 8.1 应用中使用 Visual C++ 2012 构建的 Windows 8.0 扩展 SDK 组

Using a Windows 8.0 Extension SDK component built using Visual C++ 2012 in a Windows 8.1 app

本文关键字:Windows 构建 SDK 2012 扩展 Visual 应用 C++      更新时间:2023-10-16

我有一个使用 Visual Studio 2012 构建的 Windows 8 应用程序。 此应用还使用同样使用 Visual Studio 2012 构建的第三方组件(打包为扩展 SDK)。 由于此组件是使用 C++ 编写的,因此扩展 SDK 依赖于 Microsoft.VCLibs.110.00(Visual C++ 2012 运行时)。

现在,我正在尝试为 Windows 8.1 重建此应用程序。 当我尝试使用 Visual Studio 2013 构建此项目时,我看到以下行为(仅使用 Bing Maps SDK 作为示例,这适用于使用 VS 2012 构建的任何其他 SDK):


Windows

8.1 C++引用 Windows 8.0 扩展 SDK 组件的应用

生成失败,并显示以下错误:

1>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1803,5):警告 MSB3842:"cppapp"项目依赖于 SDK"Bing Maps for C#、C++ 或 Visual Basic v1.113.0601.2",它支持面向"Windows 8.0"的应用。若要验证"Bing Maps for C#、C++ 或 Visual Basic v1.113.0601.2"是否与"Windows 8.1"兼容,请与 SDK 作者联系或参阅 http://go.microsoft.com/fwlink/?LinkID=309181。

1>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1803,5):警告MSB3781:SDK "Bing.Maps.Xaml, Version=1.113.0601.2" 依赖于以下 SDK"Microsoft.VCLibs, version=11.0",这些 SDK 尚未添加到项目中或未找到。请确保将这些依赖项添加到项目中,否则可能会遇到运行时问题。可以通过引用管理器向项目添加依赖项。

1>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1803,5):错误MSB3841:SDK "Bing Maps for C#、C++ or Visual Basic"依赖于 SDK "Microsoft.VCLibs, version=11.0",它与"Windows 8.1"不兼容。请参考支持"Windows 8.1"的 SDK 版本"Bing Maps for C#、C++ 或 Visual Basic"。

引用 Windows 8.0 扩展 SDK 组件的 Windows 8.1 C# 应用

生成失败,并显示以下错误:

1>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1803,5):警告MSB3842:"csharpapp"项目依赖于SDK"Bing Maps for C#, C++, or Visual Basic v1.113.0601.2",它支持面向"Windows 8.0"的应用。若要验证"Bing Maps for C#、C++ 或 Visual Basic v1.113.0601.2"是否与"Windows 8.1"兼容,请与 SDK 作者联系或参阅 http://go.microsoft.com/fwlink/?LinkID=309181。

1>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1803,5):警告MSB3783:"csharpapp"项目依赖于SDK"Microsoft Visual C++运行时包v11.0",该工具包最初是为面向"Windows 8.0"的应用发布的。若要验证"Microsoft Visual C++ 运行时包 v11.0"是否与"Windows 8.1"兼容,请与 SDK 作者联系或参阅 http://go.microsoft.com/fwlink/?LinkID=309181。

1>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1803,5):错误MSB3841:SDK "Bing Maps for C#、C++ or Visual Basic"依赖于 SDK "Microsoft.VCLibs, version=11.0",它与"Windows 8.1"不兼容。请参考支持"Windows 8.1"的 SDK 版本"Bing Maps for C#、C++ 或 Visual Basic"。

瓦克错误

如果我能够以某种方式继续前进(在更改必应地图 SDK 的 SDKManifest.xml之后),我就可以创建一个应用包。 当我在我的应用程序上运行 WACK 时,出现以下错误:

cppapp 依赖于Microsoft Visual C++ 运行时包 (Microsoft.VCLibs.110.00) 框架,但清单中缺少框架依赖项声明。


有没有人遇到过这些问题。 如果是,那么您如何解决这些问题?

Visual Studio 2013 Update 1(有关详细信息,请参阅此博客文章)解决了这些问题。 它包含适当的修补程序来取消阻止上述方案,并允许使用 VS2013 构建的 Windows 8.1 应用引用标记为 Windows 8 和/或使用 Visual C++ 2012 构建的 SDK。

若要从 Windows 8.1

引用必应地图,应使用适用于 Windows 8.1 的 SDK,而不是适用于 Windows 8 的 SDK。

从这里和这里需要重新编译一个C++包才能与 Windows 8.1 兼容,所以如果它尚未更新并且您无法访问源代码,您将无能为力......

在 C++ 中创作并针对 Windows 8 创建的扩展 SDK 与 Windows 8.1 不兼容。