Flutter Windows x64应用编译失败求助:错误C2220与警告C4018
问题:Windows x64平台调试Flutter示例应用编译失败
我在Windows x64设备上调试Flutter示例应用时编译失败,报1个错误和1个警告,但Edge、Chrome和Android平台都能正常调试。
调试控制台输出
Launching lib\main.dart on Windows in debug mode... lib\main.dart:1 F:\flut\flutter_application_5\windows\runner\utils.cpp(52,43): error C2220: warning treated as error - no 'object' file generated [F:\flut\flutter_application_5\build\windows\runner\flutter_application_5.vcxproj] F:\flut\flutter_application_5\windows\runner\utils.cpp(52,43): warning C4018: '>': signed/unsigned mismatch [F:\flut\flutter_application_5\build\windows\runner\flutter_application_5.vcxproj] Exception: Build process failed.
Flutter Doctor日志
[flutter] flutter doctor -v [√] Flutter (Channel stable, 3.0.5, on Microsoft Windows [Version 10.0.19044.1826], locale en-US) • Flutter version 3.0.5 at C:\src\flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision f1875d570e (6 weeks ago), 2022-07-13 11:24:16 -0700 • Engine revision e85ea0e79c • Dart version 2.17.6 • DevTools version 2.12.2 [√] Android toolchain - develop for Android devices (Android SDK version 33.0.0) • Android SDK at C:\Users\MEMPHIS\AppData\Local\Android\sdk • Platform android-33, build-tools 33.0.0 • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840) • All Android licenses accepted. [√] Chrome - develop for the web • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe [√] Visual Studio - develop for Windows (Visual Studio Enterprise 2019 16.1.0) • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise • Visual Studio Enterprise 2019 version 16.1.28917.181 • Windows 10 SDK version 10.0.17763.0 [√] Android Studio (version 2021.2) • Android Studio at C:\Program Files\Android\Android Studio • Flutter plugin can be installed from: https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840) [√] VS Code (version 1.70.2) • VS Code at C:\Users\MEMPHIS\AppData\Local\Programs\Microsoft VS Code • Flutter extension version 3.46.0 [√] Connected device (3 available) • Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.19044.1826] • Chrome (web) • chrome • web-javascript • Google Chrome 104.0.5112.102 • Edge (web) • edge • web-javascript • Microsoft Edge 104.0.1293.63 [√] HTTP Host Availability • All required HTTP hosts are available • No issues found! exit code 0
问题原因与解决方法
问题根源
错误C2220是因为编译器将警告C4018(有符号与无符号整数类型不匹配)强制当作错误处理,导致无法生成目标文件,最终编译失败。该问题通常由Windows项目编译设置、代码类型不匹配,或是Flutter与Visual Studio版本兼容性问题引发。
解决方法
方法1:关闭"警告视为错误"的编译设置
- 打开项目目录下的
windows/runner/flutter_application_5.vcxproj文件(替换为你的项目名称) - 找到
<TreatWarningAsError>标签,将其值从true修改为false - 保存文件后,重新执行
flutter run -d windows命令
方法2:修复代码中的类型不匹配问题
- 打开
windows/runner/utils.cpp文件,定位到第52行 - 找到引发有符号/无符号不匹配的代码,例如将有符号整数与无符号整数直接比较的逻辑,把有符号变量转换为无符号类型(比如
static_cast<size_t>(变量名))后再进行比较 - 保存修改后重新编译项目
方法3:更新Visual Studio版本
你当前使用的Visual Studio 2019 16.1.0版本较旧,可能与Flutter 3.0.5存在兼容性问题。建议将Visual Studio 2019更新至最新版本,或是升级到Visual Studio 2022,之后重新运行项目。
内容的提问来源于stack exchange,提问作者Mohsen Memphis
相关产品推荐
相关产品推荐

