我正在使用 C++/WinRT 为 uwp 创建一个 winrt 组件。我定义了一个类似自爆的运行时类,
namespace TagLibUWP
{
[bindable]
[default_interface]
runtimeclass Picture
{
Picture();
UInt8[] Data{ get; set; };
}
}
然后cppwinrt编译器生成这样的代码,
struct Picture : PictureT<Picture>
{
Picture() = default;
com_array<uint8_t> Data();
void Data(array_view<uint8_t const> value);
};
winrt 组件已编译,但当另一个 UWP 应用(使用 C++/WinRT 编写)引用该组件时,该应用无法编译。
错误就像自爆,
Error C2664 'auto winrt::impl::consume_TagLibUWP_IPicture<winrt::TagLibUWP::IPicture>::Data(winrt::array_view<const uint8_t>) const':
cannot convert argument 1 from 'winrt::com_ptr<To>' to 'winrt::array_view<const uint8_t>'
with
[
To=uint8_t []
] BlankApp1 C:\Users\Cool-\source\repos\Test\TagLib\BlankApp1\Generated Files\XamlTypeInfo.g.cpp 88
让我感到困惑的是,可以编译一个 uwp 应用程序(用 C# 编写)。
简而言之,我只想替换 C++/CX 中的 Array。我找到了这个,这不是我想要的。我想知道的是如何在 MIDL 3.0 中定义字节数组的属性。我已经像上面那样尝试过,但似乎我不能像上面那样做。
那么有人可以帮我解决这个问题吗?