【发布时间】:2015-01-28 14:38:18
【问题描述】:
我用 VS2013 制作了一个 Windows 运行时组件,使用 C++/CX 并针对通用应用程序。因此,我现在有 5 个 DLL 文件:
-
Windows
-
ARM
- MyLib.winmd
- MyLib.dll
-
x86
- MyLib.winmd
- MyLib.dll
-
x64
- MyLib.winmd
- MyLib.dll
-
ARM
-
Windows 电话
-
ARM
- MyLib.winmd
- MyLib.dll
-
x86
- MyLib.winmd
- MyLib.dll
-
ARM
我的客户想在 Windows 8.1 项目中使用这个库。他告诉我,他不能将 lib 与针对“AnyCPU”的项目一起使用,这是正常的,因为每个 DLL 都是针对单个平台的。但是,我应该告诉他什么呢?他应该如何创建他的项目以使包在每个平台上都可以运行?
【问题讨论】:
-
他需要从他的项目中删除 AnyCPU 平台,这不能再工作了。 Build + Configuration Manager,右上角组合,编辑。选择 AnyCPU 并单击删除。
-
是的,但他如何添加对库的引用?他想为所有架构构建他的应用程序,但如果对 lib 的引用指向其 ARM 版本,x86 构建将不会成功。引用具有多个架构的库的常用方法是什么?
-
.winmd 文件是平台无关的,它只包含类型描述。编译器用来了解如何生成适当的特定于平台的代码以使用类型的元数据。相当于一个 .h 文件,但可由许多不同的编译器使用。就像您的客户正在使用的 C# 编译器一样。你应该只发布一个。
标签: windows windows-store-apps windows-phone-8.1