VS2012错误C1107

12

我遇到了以下错误:

fatal error C1107: could not find assembly 'platform.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable

复现步骤:

0)创建一个新的空项目

1)C/C++ > 通用 > 使用 Windows 运行时扩展 > 是

2)C/C++ > 代码生成 > 启用最小重建 > 不

3)添加一个源文件 *.cpp,文件可以为空白

4)尝试编译

我尝试手动比较并更改项目设置以匹配某些示例代码中的设置,但似乎没有什么作用。

2个回答

13

我不明白你遇到的问题是什么,所以

  1. 如果你不想针对WinRT编码,只需将“Consume…”设置为false,问题就会消失
  2. 如果你想针对WinRT编码,你需要执行一个额外的步骤:进入常规并将Windows Store应用程序支持设置为true

2
那个选项与哪个标志相关联?我有一个创建VS项目的Cmake,那我怎样才能启用它呢? - Mark
1
@IonescuRobert,那是/ZW。 - Yoav Schwartz

5
创建C++/CX桌面应用程序的步骤如下:
在“C/C++ -> 通用”项目属性中,将“使用Windows运行时扩展”设置为Yes。
在同一标签页中,将包含“windows.winmd”和“platform.winmd”文件的目录添加到“其他 #using 目录”中。对于我来说,使用VS2017,这些目录是:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\store\references; C:\Program Files (x86)\Windows Kits\10\UnionMetadata; C:\Program Files (x86)\Windows Kits\10\References\Windows.Foundation.UniversalApiContract\2.0.0.0; C:\Program Files (x86)\Windows Kits\10\References\Windows.Foundation.FoundationContract\2.0.0.0
然后调用RoInitialize或者使用WinRT主函数(以删除关于主线程的警告C4447)。
using namespace Platform;

int main(Array<String^>^ args) ....

参考文献:
在桌面应用程序中使用C++/CX,
从桌面应用程序调用Windows 10 API


如果您希望您的应用程序继续针对Windows,那么这似乎是正确的选项。注意:必须将TargetPlatformVersion附加到UnionMetadata才能找到windows.winmd: C:\ Program Files(x86)\ Windows Kits \ 10 \ UnionMetadata \ $(TargetPlatformVersion) - jorgen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接