【问题标题】:Error accessing WinRT sensors in C++ desktop application在 C++ 桌面应用程序中访问 WinRT 传感器时出错
【发布时间】:2014-06-17 23:57:05
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: windows-runtime c++-cx


【解决方案1】:

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

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

  1. 将此部分添加到文件的开头,在根项目节点下:

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

  2. 搜索并删除定义了&lt;CompileAsWinRT&gt; 的任何其他位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    相关资源
    最近更新 更多