升级到模块后,WinUI3在启动时崩溃

编程语言 2026-07-08

这只会在附加调试器启动时发生。若在窗口打开后再附加调试器,程序的行为将符合预期。

我相信以前也遇到过类似的问题,即在 IApplicationStatics 时有一次跟踪记录(但从未去理解它),所以希望有谁能认出它。

在地址0x0000000000000000处执行时发生访问冲突

    [Exception thrown at 0x0000000000000000 in App1.exe: 0xC0000005: Access violation executing location 0x0000000000000000.]   
    0000000000000000()  Unknown
    combase.dll!00007ffe40396f28()  Unknown
    rpcrt4.dll!00007ffe3fd1fb43()   Unknown
    rpcrt4.dll!00007ffe3fd1fcdb()   Unknown
    rpcrt4.dll!00007ffe3fde73c6()   Unknown
    rpcrt4.dll!00007ffe3fde57cc()   Unknown
    rpcrt4.dll!00007ffe3fd26c50()   Unknown
    combase.dll!00007ffe403fdcc3()  Unknown
    combase.dll!00007ffe403fdbdb()  Unknown
    combase.dll!00007ffe403fd156()  Unknown
    combase.dll!00007ffe403fc468()  Unknown
    combase.dll!00007ffe4044964f()  Unknown
    combase.dll!00007ffe403b7df4()  Unknown
    combase.dll!00007ffe403bab0c()  Unknown
    combase.dll!00007ffe403b960f()  Unknown
    combase.dll!00007ffe404ccf87()  Unknown
    user32.dll!00007ffe401ac396()   Unknown
    user32.dll!00007ffe401aa7ed()   Unknown
    Microsoft.ui.xaml.dll!00007ffdd4bd7067()    Unknown
    Microsoft.ui.xaml.dll!00007ffdd4bd7275()    Unknown
    Microsoft.ui.xaml.dll!00007ffdd4bd7412()    Unknown
>   App1.exe!winrt::impl::consume_general<winrt::Microsoft::UI::Xaml::IApplicationStatics,winrt::Microsoft::UI::Xaml::IApplicationStatics,int (__cdecl winrt::impl::abi<winrt::Microsoft::UI::Xaml::IApplicationStatics,void>::type::*)(void *) noexcept,void * &>(const winrt::Microsoft::UI::Xaml::IApplicationStatics * d, int(winrt::impl::abi<winrt::Microsoft::UI::Xaml::IApplicationStatics,void>::type::*)(void *) noexcept mptr, void * & <args_0>) Line 2458  C++
    App1.exe!winrt::impl::consume_Microsoft_UI_Xaml_IApplicationStatics<winrt::Microsoft::UI::Xaml::IApplicationStatics>::Start(const winrt::Microsoft::UI::Xaml::ApplicationInitializationCallback & callback) Line 188    C++
    App1.exe!winrt::Microsoft::UI::Xaml::Application::Start::__l2::<lambda_1>::operator()(const winrt::Microsoft::UI::Xaml::IApplicationStatics & f) Line 12598 C++
    App1.exe!winrt::impl::factory_cache_entry<winrt::Microsoft::UI::Xaml::Application,winrt::Microsoft::UI::Xaml::IApplicationStatics>::call<`winrt::Microsoft::UI::Xaml::Application::Start'::`2'::<lambda_1> &>(winrt::Microsoft::UI::Xaml::Application::Start::__l2::<lambda_1> & callback) Line 6444    C++
    App1.exe!winrt::impl::call_factory<winrt::Microsoft::UI::Xaml::Application,winrt::Microsoft::UI::Xaml::IApplicationStatics,`winrt::Microsoft::UI::Xaml::Application::Start'::`2'::<lambda_1>>(winrt::Microsoft::UI::Xaml::Application::Start::__l2::<lambda_1> && callback) Line 6466   C++
    App1.exe!winrt::Microsoft::UI::Xaml::Application::Start(const winrt::Microsoft::UI::Xaml::ApplicationInitializationCallback & callback) Line 12598  C++

解决方案

有一个编译器缺陷会影响cppwinrt的封送器实现。根据调用栈中出现rpcrt4.dll,这几乎可以确定是同一个问题。

https://github.com/microsoft/cppwinrt/issues/1590

好消息是我已经准备好了一个可行的变通方案,已经就位并经过测试,很快就会发布新版本。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章