我正在尝试使用C ++ / CX从Win32桌面应用程序访问WinRT传感器,如下所述:https://software.intel.com/en-us/articles/using-winrt-apis-from-desktop-applications
当我包含C ++ / CX头文件时,它会在构建Win32项目时导致错误。
确切错误文本:“错误C1190:托管目标代码需要'/ clr'选项。”
由于我根本不使用/ clr代码,这是一个令人困惑的错误。
有什么建议吗?如果有更好的方法,请教育我。
答案 0 :(得分:1)
您得到的错误是因为您正在为编译器编译没有/ ZW选项的某些文件。由于您能够编译至少一些具有WinRT扩展名的文件,而不能编译其他文件,因此您的项目配置不一致。
必须在项目级别(而不是单个文件级别)上配置选项/ ZW(启用WinRT扩展)。有两种方法可以确保您的设置一致。第一种方法是通过Visual Studio中的UI - 您必须遍历项目中的所有平台/配置并确保/ ZW已启用,然后通过所有单个.cpp文件,并确保它们不会覆盖项目级别设置。这很乏味且容易出错。更简单的方法是在记事本中打开.vcxproj并执行以下操作:
在根项目节点
下的文件的beginnig中添加此部分 <ItemDefinitionGroup>
<ClCompile>
<CompileAsWinRT>true</CompileAsWinRT>
</ClCompile>
</ItemDefinitionGroup>
搜索并删除定义<CompileAsWinRT>
的所有其他地方。