Hello,
I am new to using Platform.io and encountered a problem including a file in my main.cpp.
I am using this structure right now:
|–lib
| |
| |–dotenv-parser
| | |- dotenv-parser.cpp
| | |- dotenv-parser.h
|
|- platformio.ini
|–src
|- main.cpp
main.cpp:
#include <Arduino.h>
#include <dotenv-parser.h>
void setup()
{
// launch on proper port I guess
Serial.begin(9600);
DotenvParser parser;
parser.parseFileContent();
}
void loop()
{
}
dotenv-parser.cpp
#include <dotenv-parser.h>
#include <Arduino.h>
#include <iostream>
#include <string>
#include <SPIFFS.h>
// use strdup to parse string to char*
DotenvParser::DotenvParser(char const *givenFilepath = strdup(".env"))
{
// set proper filepath
filepath = givenFilepath;
// check if fs could be mounted
if (!SPIFFS.begin(true))
{
Serial.println("FS could not be mounted!");
}
}
void DotenvParser::parseFileContent()
{
// open file containing secrets
File file = SPIFFS.open("/.env");
if (!file)
{
Serial.println("Could not read file");
}
Serial.println("Content of file:");
while (file.available())
{
Serial.write(file.read());
}
// close file after reading it
file.close();
}
dotenv-parser.h:
// prevent from multiple defining
#ifndef dotenv_parser
#define dotenv_parser
class DotenvParser
{
public:
DotenvParser(char const*filepath);
DotenvParser();
void parseFileContent();
private:
const char *filepath;
};
#endif
Building the projects gives me the following error:
Linking .pio\build\esp32dev\firmware.elf
.pio\build\esp32dev\src\main.cpp.o:(.literal._Z5setupv+0x10): undefined reference to `DotenvParser::DotenvParser()'
.pio\build\esp32dev\src\main.cpp.o: In function `setup()':
D:\HomeAssistant\HomeAssistantESP/src/main.cpp:18: undefined reference to `DotenvParser::DotenvParser()'
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\esp32dev\firmware.elf] Error 1
Anyone knows whats the problem. I tried every related posts solution for hours but I cant get it fixed!
I would be very happy about a little help