Ошибка компиляции: undefined reference to
- Войдите на сайт для отправки комментариев
Чт, 14/12/2017 - 04:10
Доброго времени суток.
Создал новый класс, но некоторые методы недоступны. Не могу понять в какую степь копать, коли одни методы вызываются нормально, другие же жалуют на undefined reference. Rus_LCD расширяет класс LCD_1602_RUS. Если же вызывать сей метод из другого класса, всё работает ок, а вот из ino файла беда...
#include <Arduino.h> #include "RUS_LCD.h" #pragma GCC diagnostic ignored "-Wwrite-strings" #define STR_START L"Старт" Rus_LCD *LCD1 = NULL; void LCDSetup(); void setup() { Serial.begin(9600); LCDSetup(); LCD1->setCursor(0, 0); LCD1->print("Start"); // Ok LCD1->LastLCDRefresh = 0; //ok class member is avaliable LCD1->LCD_Txt(STR_START, 0, 0, true); /* Code::Blocks error * TestLCD.ino:(.text.setup+0x56)||undefined reference to `Rus_LCD::LCD_Txt(wchar_t*, int, int, bool)'| * * Ardino IDE * TestLCD.ino:19: undefined reference to `Rus_LCD::LCD_Txt(wchar_t const*, int, int, bool)' */ } void loop() { LCD1->print("Start"); // Ok LCD1->LastLCDRefresh = 0; //ok class member is avaliable //LCD1->LCD_Txt(STR_START, 0, 0, true);// TestLCD.ino:(.text.loop+0x32)||undefined reference to `Rus_LCD::LCD_Txt(wchar_t*, int, int, bool)'| } void LCDSetup() { LCD1 = new Rus_LCD(0x3F,16,2); LCD1->backlight(); LCD1->clear(); }
Код закинул на гугль-диск (https://drive.google.com/drive/folders/1oEpqenJb5j-p-G03csdoTqHxkspGyB_V...)
А класса-то почему нет? И полного сообщения об ошибке?
Класс по ссылке в исходниках -
и второй
Ошибка:
Класс по ссылке в исходниках -
Rus_LCD расширяет класс LCD_1602_RUS.
Кто Вам сказал?
Смотрю на строку 12 первого скетча - ничего он не расштряет, он сам по себе?
Может в этом и проблема?
Спасибо, уже решил изменив функции из встраиваемых на обычные. Удалил inline и заработало.
Уберите inline в строках 79, 89 и 100
Что означает "L", в этом дефинишене ?
#define STR_START L"Старт"
Ну, вот, сделали на минуту раньше, чем я успел написать. Молодец! И нафига было постить, прежде, чем думать? Надо наоборот.
У вас действительно такие названия папок?
D:\@DeveL@\@ArduinO@\
В то время уже голова не работала и не знал даже куда копать. А здесь в визуализаторе кода на свежую голову пришла мысль, которая и сработала.
true
Что означает "L", в этом дефинишене ?
#define STR_START L"Старт"
Это так символы типа wchar_t задаются - с префиксом L.
Что означает "L", в этом дефинишене ?
#define STR_START L"Старт"
Хранение в wchar_t - не есть UTF-8, это просто wide char.
Хранение в wchar_t - не есть UTF-8, это просто wide char.
Скопировано из часто используемой библиотеки LCD_1602_RUS. Это уже к автору сей либы.