在C ++桌面应用程序中访问WinRT传感器时出错

时间:2014-06-16 17:24:11

标签: windows-runtime c++-cx

我正在尝试使用C ++ / CX从Win32桌面应用程序访问WinRT传感器,如下所述:https://software.intel.com/en-us/articles/using-winrt-apis-from-desktop-applications

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

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

由于我根本不使用/ clr代码,这是一个令人困惑的错误。

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

1 个答案:

答案 0 :(得分:1)

您得到的错误是因为您正在为编译器编译没有/ ZW选项的某些文件。由于您能够编译至少一些具有WinRT扩展名的文件,而不能编译其他文件,因此您的项目配置不一致。

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

  1. 在根项目节点

    下的文件的beginnig中添加此部分

    <ItemDefinitionGroup> <ClCompile> <CompileAsWinRT>true</CompileAsWinRT> </ClCompile> </ItemDefinitionGroup>

  2. 搜索并删除定义<CompileAsWinRT>的所有其他地方。