为现有Flutter插件加Windows平台时c_api与generated_plugin_registrant.cc异常
解决Flutter现有插件Windows平台generated_plugin_registrant.cc头文件路径缺失c_api后缀问题
问题根源
旧版Flutter Windows插件的头文件命名不带c_api后缀,而新版Flutter为适配FFI等特性,插件模板生成的头文件默认带有该后缀。现有项目因未同步更新插件配置,导致自动生成的generated_plugin_registrant.cc中的include路径与实际头文件不匹配。
解决方案
1. 修正插件pubspec.yaml配置
在插件的pubspec.yaml中,明确指定Windows平台的头文件名,确保与实际文件一致:
flutter: plugin: platforms: windows: pluginClass: UtilPublicStorePlugin dartPluginClass: UtilPublicStore fileName: util_public_store_plugin_c_api.h
2. 手动临时修正自动生成文件(仅临时应急,不推荐长期依赖)
直接修改example/windows/flutter/generated_plugin_registrant.cc中的include路径,添加c_api后缀:
// 替换原include行 #include <util_public_store/util_public_store_plugin_c_api.h>
注意:该文件为自动生成,后续执行flutter run或pub get可能会被覆盖,建议优先通过配置层面解决。
3. 同步Flutter版本与插件模板
- 升级Flutter到最新稳定版:
flutter upgrade
- 重新生成Windows平台相关文件(执行前请备份现有Windows目录内容):
flutter create --platforms=windows .
4. 验证插件Windows目录结构与CMake配置
确保插件的Windows头文件路径为windows/include/util_public_store/util_public_store_plugin_c_api.h,并在windows/CMakeLists.txt中正确配置include路径:
target_include_directories(${PLUGIN_NAME} INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/include" )
内容的提问来源于stack exchange,提问作者Hedwin
相关产品推荐
相关产品推荐

