uwp - C++/WinRT 无法从 'winrt::com_ptr 转换参数 1' 到 'winrt::array_view
问题描述
我正在使用 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 中定义字节数组的属性。我已经像上面那样尝试过,但似乎我不能像上面那样做。
那么有人可以帮我解决这个问题吗?
解决方案
推荐阅读
- c# - 时间跨度解析错误 - 输入字符串格式不正确
- octave - 如何在运行 octave 脚本时从语法错误中获得非零返回?
- sql - 如何使自动递增的 id 列在 SQL Server 中使用缺失的数字?
- java - Java中使用PriorityQueue的第k个最小数字的时间复杂度
- python - 为什么在这个例子中 RidgeCV 中的 alphas=alphas?
- hook-woocommerce - WooCommerce 订阅获得计费间隔和 ID
- node.js - 为什么 nodejs + babelrc + flow 在 Visual Studio 上给我一个错误?
- python - 如果我有多个最小数字并且想要两个索引,如何在 python 中找到数组中最小数字的索引?
- .net - 如何在 WebBrowser 控件和 CookieAwareWebClient 之间共享 cookie?
- raspberry-pi - WPA 密码短语不适用于 Raspberry Pi 作为无线路由器