Windows runtime 访问C+中的WinRT传感器时出错+;桌面应用程序

Windows runtime 访问C+中的WinRT传感器时出错+;桌面应用程序,windows-runtime,c++-cx,Windows Runtime,C++ Cx,我正在尝试使用C++/CX从Win32桌面应用程序访问WinRT传感器,如下所述: 当我包含C++/CX头文件时,在构建Win32项目时会导致错误 确切错误文本:“错误C1190:托管目标代码需要'/clr'选项。” 因为我根本没有使用/clr代码,所以这是一个令人困惑的错误 有什么建议吗?如果有更好的方法,请告诉我。您遇到的错误是因为您在编译某些文件时没有使用编译器的/ZW选项。由于您至少可以编译一些具有WinRT扩展名的文件,但不能编译其他文件,因此您的项目配置不一致 选项/ZW(启用Win

我正在尝试使用C++/CX从Win32桌面应用程序访问WinRT传感器,如下所述:

当我包含C++/CX头文件时,在构建Win32项目时会导致错误

确切错误文本:“错误C1190:托管目标代码需要'/clr'选项。”

因为我根本没有使用/clr代码,所以这是一个令人困惑的错误


有什么建议吗?如果有更好的方法,请告诉我。

您遇到的错误是因为您在编译某些文件时没有使用编译器的/ZW选项。由于您至少可以编译一些具有WinRT扩展名的文件,但不能编译其他文件,因此您的项目配置不一致

选项/ZW(启用WinRT扩展名)必须在项目级别(而不是单个文件级别)上配置。有两种方法可以确保设置的一致性。第一种方法是通过Visual Studio中的UI——您必须检查项目上的所有平台/配置,并确保启用了/ZW,然后检查所有indivudal.cpp文件,并确保它们不会覆盖项目级设置。这很乏味,而且容易出错。更简单的方法是在记事本中打开.vcxproj并执行以下操作:

  • 在文件开头的根项目节点下添加此部分:

    
    真的
    

  • 搜索并删除定义了
    的任何其他位置


  • 您包括哪个C++/CX头文件?您应该
    #使用
    winmd库,而不是
    #包含
    标题。感谢您的回复!因此,在我的C++/CX文件中,我使用的是winmd,但在现有的代码中,我使用的是C++/CX类。这就是错误发生的地方。请参阅我在这个主题上的另一个问题,该问题在没有明显原因的情况下被否决。它包括一些代码: