ESP32平台LovyanGFX库编译失败求助:LGFX_SPI模板类型错误
解决LovyanGFX编译错误:'LGFX_SPI' in namespace 'lgfx' does not name a template type
问题根源
这个错误是因为你当前安装的LovyanGFX版本和旧项目依赖的版本不兼容——新版库已经移除了LGFX_SPI这类模板化快捷定义,改用基于配置结构体的初始化逻辑。连库自带示例都报错,说明你装的是新版库,但旧代码(包括库的旧版示例)是基于旧版API编写的。
解决办法
方法1:回退到适配旧项目的库版本
找到旧项目开发时使用的LovyanGFX版本重新安装:
- Arduino IDE:打开库管理器,搜索LovyanGFX,点击"选择版本",挑选对应旧版本安装。
- PlatformIO:在
platformio.ini中指定库版本,比如lib_deps = lovyan/LovyanGFX@<具体旧版本号>,再重新编译项目。
方法2:修改代码适配新版库
如果要升级到新版库,需要替换原有的LGFX_SPI相关代码,改用自定义设备类的方式。以下是SPI接口屏幕(以ST7789为例)的适配示例:
#include <LovyanGFX.hpp> // 自定义LCD设备类,继承自LGFX_Device class LGFX : public lgfx::LGFX_Device { lgfx::Panel_ST7789 _panel; // 屏幕面板实例 lgfx::Bus_SPI _bus; // SPI总线实例 lgfx::Light_PWM _backlight; // 背光控制实例 public: LGFX(void) { // 配置SPI总线参数 auto bus_cfg = _bus.config(); bus_cfg.spi_host = VSPI_HOST; // 指定VSPI总线 bus_cfg.spi_mode = 0; // SPI模式0 bus_cfg.freq_write = 40000000; // 写入频率40MHz bus_cfg.pin_sclk = 18; // SCLK引脚 bus_cfg.pin_mosi = 23; // MOSI引脚 bus_cfg.pin_miso = -1; // 不使用MISO引脚 bus_cfg.pin_dc = 2; // DC引脚 _bus.config(bus_cfg); _panel.setBus(&_bus); // 配置屏幕面板参数 auto panel_cfg = _panel.config(); panel_cfg.pin_cs = 5; // CS引脚 panel_cfg.pin_rst = -1; // 不使用RST引脚 panel_cfg.panel_width = 240;// 屏幕宽度 panel_cfg.panel_height = 320;// 屏幕高度 panel_cfg.invert = true;// 颜色反转 _panel.config(panel_cfg); // 配置背光参数 auto bl_cfg = _backlight.config(); bl_cfg.pin_bl = 4; // 背光引脚 _backlight.config(bl_cfg); _panel.setLight(&_backlight); setPanel(&_panel); } }; static LGFX lcd; // 实例化LCD对象
根据你的实际屏幕型号和引脚布局,修改上述代码中的参数即可。
方法3:重新安装库排查文件缺失
如果是库安装不完整导致头文件或源文件缺失,先卸载当前LovyanGFX,再重新下载安装对应版本,确保所有文件都正确加载。
内容的提问来源于stack exchange,提问作者Κωνσταντίνος Κ.
相关产品推荐
相关产品推荐

