开发环境:ESP32-platformio-arduino
语言:C/C++
在main.cpp(主程序)里面使用了自己编写的头文件的内容,语法上没有错误,头文件和.cpp文件都放在了正确的目录下面(头文件在include文件夹下,.cpp在src文件夹下),构建项目的时候总是出现类似于 undefined reference to `DisplayManager::DisplayManager()' 这种错误,
尝试过网上的其他方法,编辑 c_cpp_properties.json但是没有任何效果,错误如下图所示,纯粹的折磨,改了半宿没改明白。
后来把build终端里的log复制到记事本里面去找,
如上图所示,蓝色光标标出来的main.cpp.o这是log里面第一次编译mian.cpp,下面再次出现main.cpp就是报错了,说明编译器只编译了mian.cpp,此时在我的src文件夹里还有一个DisplayManager.cpp编译器并没有编译,而这个错误提示相关的关键依赖均来自于DisplayManager.cpp。
这个时候就想到要修改项目配置文件,platformio的配置文件是platformio.ini
默认的情况下,这个配置文件中:
build_src_filter =
+<D:\work\esp32dev\src\mian.cpp>
这个是默认的配置,意思是编译器在构建项目的时候只会编译mian.cpp
应该改为:
build_src_filter =
+<D:\work\esp32dev\src>
这样编译器就会编译src文件夹下的所有文件了,项目成功build!