Всем привет! Подскажите, как правильно создавать свою библиотеку. При подключении своей библиотеки валятся ошибки. Вот все что написал: gms.h: #ifndef gms_h #define gms_h #include "Arduino.h" class gms { public: gms(int pordDate, int portClock, int portLat); private: int _portDate; int _pirtClock; int _portLat; char _dm633[24]; boolean portReg[16]; } #endif //--------------------------------------------- gms.cpp #ifndef gms_h #define gms_h #include "Arduino.h" class gms { public: gms(int pordDate, int portClock, int portLat); private: int _portDate; int _pirtClock; int _portLat; char _dm633[24]; boolean portReg[16]; } #endif
Не заметил отличий .h от .cpp В хидере должно сидеть описание класса, а в сишнике - реализация. А у Вас фактически получилось 2 хидера и ни в одном из них нет реализации функций, объявленных в классе.
Для примера посмотрите крохотную библиотеку EEPROM. EEPROM.cpp: Код (C): #include <avr/eeprom.h> #include "Arduino.h" #include "EEPROM.h" // реализация метода, объявленного в хидере uint8_t EEPROMClass::read(int address) { return eeprom_read_byte((unsigned char *) address); } // реализация метода, объявленного в хидере void EEPROMClass::write(int address, uint8_t value) { eeprom_write_byte((unsigned char *) address, value); } EEPROMClass EEPROM; EEPROM.h: Код (C): #ifndef EEPROM_h #define EEPROM_h #include <inttypes.h> // описание класса class EEPROMClass { public: // объявление методов uint8_t read(int); void write(int, uint8_t); }; extern EEPROMClass EEPROM; #endif
Извините, так торопился, что скопировал одно и то же. Вот cpp Код (C): #ifndef gms_cpp #define gms_cpp #include "Arduino.h" #include "gms.h" gms::gms(int pordDate, int portClock, int portLat) { } #endif
Unixon, большое спасибо. Заработало. Я бы еще долго пытался понять, почему ошибки валятся из другого файла. Вечная проблема, невнимательность.