gpt4 book ai didi

uwp - 在 C++/WinRT 项目中使用 CoreDispatcher::RunAsync 时,在定义之前无法使用获取 "a function that returns ' auto'

转载 作者:行者123 更新时间:2023-12-03 19:44:25 26 4
gpt4 key购买 nike

在我的 C++/WinRT 项目中,我试图在 UI 线程上运行一些代码,但收到一条错误消息:

"winrt::impl::consume_Windows_UI_Core_ICoreDispatcher<winrt::Windows::UI::Core::ICoreDispatcher>::RunAsync': a function that returns 'auto' cannot be used before it is defined"



我正在调用这样的方法:

Dispatcher().RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, [=]()
{
// Code to be executed.
});

该实现来自自动生成的 winrt 文件,该文件返回 auto作为返回类型。

template <typename D>
struct consume_Windows_UI_Core_ICoreDispatcher
{
[[nodiscard]] auto HasThreadAccess() const;
auto ProcessEvents(Windows::UI::Core::CoreProcessEventsOption const& options) const;
auto RunAsync(Windows::UI::Core::CoreDispatcherPriority const& priority, Windows::UI::Core::DispatchedHandler const& agileCallback) const;
auto RunIdleAsync(Windows::UI::Core::IdleDispatchedHandler const& agileCallback) const;
};

有什么我遗漏的还是这是一个错误?

最佳答案

这是一个相当new addition的结果到 C++/WinRT 库。在生成的文件中使用返回类型推导会将用于触发链接器错误的内容转换为编译器错误。由于以下几个原因,编译器错误是有利的:

  • 构建错误很早就出现了。您不再需要等待编译器完成,只会在构建过程中稍后看到链接器失败。
  • 编译器可以看到源代码,并会发出导致错误的文件和行号以及类型名称。相比之下,链接器将包含损坏的类型名称,从而导致非常嘈杂的输出。

  • 错误诊断的原因是缺少 #include包含相关类型的完整定义的头文件的指令。识别丢失的包含通常很简单。错误消息包括缺少的类型名称,采用以下形式

    winrt::impl::consume_<namespace1>_<namespace2>_..._<some_interface>



    相应的头文件位于 winrt 下面目录,其名称是以点分隔的命名空间串联,后跟 .h .

    在这种情况下,缺少的类型是

    winrt::impl::consume_Windows_UI_Core_ICoreDispatcher<winrt::Windows::UI::Core::ICoreDispatcher>



    所以你需要 #include <winrt/Windows.UI.Core.h>进入使用 ICoreDispatcher 的编译单元界面。

    Raymond Chen 在其标题为 Why does my C++/WinRT project get errors of the form “consume_Something: function that returns ‘auto’ cannot be used before it is defined”? 的博客文章中提供了有关该主题的更多背景信息。 .

    关于uwp - 在 C++/WinRT 项目中使用 CoreDispatcher::RunAsync 时,在定义之前无法使用获取 "a function that returns ' auto',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57450168/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com