0

我在 c++/winrt WRC 项目的 IDL 文件中有一些结构和枚举。

这样数据结构就可以在 C++ 和 C# 之间共享。

将 Winmd 添加到 UWP C# 项目并且类型可见 ok

然后尝试winrt项目

  1. Winrt CoreApp 项目在添加 winmd 后构建良好,但从未看到类型。

  2. 由于我的类型,Winrt Blank Project 无法在某些 xaml 相关文件中编译,这仅仅是添加 winmd 的结果。

但是 C# UWP 项目没有这样的问题。在 C# uwp 中,我可以看到我的类型并毫无问题地使用它。

干杯

4

1 回答 1

0

因此,如果 C# 可以使用 WinRT 组件中实现的类型,那么听起来您可能没有包含头文件。您是否在文件中包含了 Windows Rutime 组件的头pch.h文件?

假设您有一个称为CatWindows 运行时组件的 Windows 运行时投影类型MyComponent,如果您的 .winmd 文件的名称是“MyComponent.winmd”,请执行以下操作:

  1. 在您的使用项目(例如,您的 .exe)中,添加对 .winmd 文件的引用。

  2. 构建项目(必须这样做!)

  3. 在文件中包含它的标题pch.h

    #include "winrt/MyComponent.h" <-- don't forget!

完成后,您应该能够找到 Cat(不要忘记命名空间范围解析等)

// some consuming .cpp file

#include "pch.h"

using namespace winrt;
using namespace Windows::Foundation;
using namespace MyComponent;    // <-- Add for convenience ...or not

App::App()
{
    Cat tabby();        // <-- Should work like a charm ;)
}
于 2018-11-06T04:13:33.917 回答