Windows平台集成flutter_quill_extensions后遇C2039错误求解决方案
解决Windows平台Flutter集成flutter_quill_extensions后的编译错误:'wait_for' is not a member of 'winrt::impl'
错误信息
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\cppwinrt\winrt/impl/Windows.Foundation.0.h(1004,26): error C2039: 'wait_for': is not a member of 'winrt::impl' [C:\Users\Tom\Downloads\iact_native-flutterpocs-be215d872058\iact_native-flutterpocs-be215d872058\player_poc\build\windows\x64\plugins\gal\gal_plugin.vcxproj]
解决方案
1. 升级Windows SDK版本
这个错误核心是你当前用的Windows 10 SDK(10.0.19041.0)版本太旧,内置的cppwinrt库没有winrt::impl::wait_for方法。操作步骤:
- 打开Visual Studio Installer,选中你在用的VS版本点击「修改」
- 切换到「单个组件」标签,找到并安装最新版的Windows 10 SDK(推荐10.0.22621.0及以上)
- 删除Flutter项目下的
build/windows目录,重新执行flutter build windows编译
2. 升级依赖插件版本
错误指向gal插件的编译问题,该插件可能和旧SDK存在兼容性冲突:
- 打开项目根目录的
pubspec.yaml,找到gal依赖项,把版本号更新为最新版 - 执行
flutter pub get拉取最新依赖 - 清理缓存后重新编译:
flutter clean && flutter build windows
3. 临时手动修复头文件(不推荐长期用)
如果暂时没法升级SDK,可以临时补全缺失的方法:
- 打开错误提示里的
Windows.Foundation.0.h文件(路径:C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\cppwinrt\winrt/impl/Windows.Foundation.0.h) - 在
namespace winrt::impl代码块里加以下代码:template<typename T> auto wait_for(T const& future, winrt::Windows::Foundation::TimeSpan const& timeout) { return future.wait_for(timeout); } - 注意:这只是临时应急方案,后续升级SDK后一定要删掉这段代码,避免引发其他冲突
内容的提问来源于stack exchange,提问作者Yogi
相关产品推荐
相关产品推荐

