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

拆分Arduino代码为模块时出现'LoRa未在作用域中声明'编译错误

问题分析与解决

编译报错'LoRa' was not declared in this scope的核心原因是头文件保护宏冲突:
你的test.h中使用了LORA_H作为头保护宏,而LoRa官方库的头文件LoRa.h内部也会使用这个宏(通常头文件保护宏会以文件名大写加下划线命名,即LORA_H)。当test.cpp包含test.h时,LORA_H已经被定义,导致后续的#include <LoRa.h>被预处理指令跳过,LoRa库的代码根本没被引入,自然找不到LoRa对象。

修复步骤

1. 修改test.h的头保护宏

把test.h里的宏换成独有的名称,避免和第三方库冲突:

#ifndef TEST_H
#define TEST_H
#include <LoRa.h>

class test {
public:
    test();
};
#endif

2. 确保类被实例化

你的main.ino里没有创建test类的实例,就算编译通过,构造函数里的LoRa.setPins也不会执行。可以通过全局实例或在setup里创建实例:

#include "test.h"

// 全局实例,会在setup前自动调用构造函数
test myLoraTest;

void setup() {
    // 或者在这里创建局部实例:test myLoraTest;
}

void loop() {
}

3. 保留test.cpp的原有代码

test.cpp的代码无需修改,只要test.h的宏正确,#include <LoRa.h>就能正常加载库内容:

#include <Arduino.h>
#include "test.h"

test::test() {
    LoRa.setPins(18, 23, 26);
}

这样修改后,代码就能正常编译并执行LoRa引脚配置了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 09:40:02