You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu18.04下Flutter Linux插件新增类CMake链接报错求助

问题根因
  • 你的猜测完全正确,Flutter创建插件生成的默认CMakeLists.txt不会自动识别新增的源文件,编译阶段能通过是因为头文件路径已配置,编译器可以找到函数声明,链接阶段需要匹配函数实现时,新增的.cc文件没有被加入编译列表,因此找不到对应实现抛出未定义引用错误。
  • 直接把实现写在xxx_plugin.cc中正常运行的原因是所有代码都在同一个编译单元,无需跨编译单元链接即可找到所有实现。
修复方法

必须手动修改插件linux目录下的CMakeLists.txt,具体操作如下:

  1. 打开路径为<插件根目录>/linux/CMakeLists.txt的配置文件
  2. 找到定义插件源文件的set(PLUGIN_SOURCES)配置块,默认仅包含自动生成的插件实现文件,将你新增的linux_recorder.cc追加到列表中:
# 修改前的默认配置示例(以vc_sound插件为例)
set(PLUGIN_SOURCES
  vc_sound_plugin.cc
)

# 修改后的配置
set(PLUGIN_SOURCES
  vc_sound_plugin.cc
  linux_recorder.cc
)
  1. 如果后续新增其他.cc实现文件,都需要按上述规则追加到PLUGIN_SOURCES列表中
  2. 保存文件后执行flutter clean清除旧的编译缓存,再重新运行flutter run即可正常链接。
  3. 你的头文件存放路径符合Flutter Linux插件的规范,无需额外修改头文件搜索路径配置,引用时使用#include <plugin/linux_recorder.h>即可正常识别。

内容的提问来源于stack exchange,提问作者user2533922

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:09:03