не компилируется код на другом компьютере
- Войдите на сайт для отправки комментариев
Как такое может быть, что на одном компьютере компилируется код, на другом нет? У меня win7 32, дал код товарищу, у него 8.1 х64. Компилятор ардуино иде ругается ошибкой. Я запаковал товарищу всю папку АРДУИНО из програм файлс, дал ему. Та же проблема. Библиотеки идентичны, ВЕРСИИ ИДЕНТИЧНЫ ПРОГРАММ!!! И никак. Попробовал я у себя дома на ноутбуке, с восьмеркой 8..1 И тоже все отлично. В чем проблема, кто сталкивался?
Ошибка:
Arduino: 1.8.5 (Windows 8.1), Плата:"Arduino/Genuino Uno"
C:\Program Files (x86)\Arduino\libraries\Si4703_Breakout\Si4703_Breakout.cpp:11:1: error: prototype for 'Si4703_Breakout::Si4703_Breakout(int, int, int)' does not match any in class 'Si4703_Breakout'
Si4703_Breakout::Si4703_Breakout(int resetPin, int sdioPin, int sclkPin)
^
In file included from C:\Program Files (x86)\Arduino\libraries\Si4703_Breakout\Si4703_Breakout.cpp:8:0:
C:\Program Files (x86)\Arduino\libraries\Si4703_Breakout\Si4703_Breakout.h:50:7: error: candidates are: constexpr Si4703_Breakout::Si4703_Breakout(Si4703_Breakout&&)
Как вы поняли, это код фм радио. Не суть. Почему при одинаковых папках с программой, библиотеке, коде. На одном компьютере это компилиурется, на втором выдает ошибку?
Строго говоря, настройки компилятора могут быть разные, они могут храниться в том же реестре, и то, что вы кинули товарищу всю IDE - ещё ничего не решает, так сказать: настройки компилятора могут подхватываться с его машины. А при параноидальных настройках компилятор очень придирчив к малейшему чиху.
Вопрос: в файле Si4703_Breakout.h имеется объявление конструктора с тремя параметрами - Si4703_Breakout(int, int, int) ?
class Si4703_Breakout { public: Si4703_Breakout(int resetPin, int sdioPin, int sclkPin, int rdsintPin); void powerOn(); // call in setup void powerOff(); // call in setup int setChannel(int channel); // 3 digit channel number int seekUp(); // returns the tuned channel or 0 int seekDown(); void setVolume(int volume); // 0 to 15 bool readRDS(unsigned *RDS,short *BLER); // message should be at least 9 chars // result will be null terminated // timeout in milliseconds int setQuality(int Quality); int getRSSI(); bool getRDS (); bool getPS (char *PS); bool getRT (char *RT); bool getPTY (char *PTY); bool getPI (char *PICODE); bool getAFPI(char *PICODE_); bool getTimeDate (int *CLOCK, int *DATE); int getAF (int *AF); bool TuneAF (int *AF, char *PICODE, int &channel, int volume); int getTC (void); int getTune (); int getStereo (); bool clearRDS (char *PS, char *RT, char *PTY, char *PICODE, int *AF); bool convertMJDtoDate (unsigned long MJD); private: int _resetPin; int _sdioPin; int _sclkPin; int _rdsintPin; int _Utcoffset; int _Utcoffsetdate; int _Lo; int _Hi; int _Stunden; int _Minuten; int _Sekunden; int _STD; unsigned long _MJD; char _PS[9]; char _RT[65]; char _PICODE[2]; char _AFPI[2]; char _PTY; char _PTY1; char _PTY2; //char _PI[2]; int _TC; int __TC; int _d; int _m; int _y; int _Wochentag; unsigned _rdsBuffer[8]; short int _BLER[4]; int _WAITBYTE_RT; int strl; int RTAdress; int GroupType; int GroupWord; int _BlockAdr; int _PSCharAdress; int _BLOCK_RT; int _LZA; int _LZE; int _AF_Zaehler; int _Puffer0; int _Puffer1; int _AF_scan_a; int _AF_scan_b; void si4703_init(); void readRegisters(); byte updateRegisters(); int seek(byte seekDirection); int getChannel(); const int16_t _nd[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int16_t _j; uint16_t si4703_registers[16]; //There are 16 registers, each 16 bits large static const uint16_t FAIL = 0; static const uint16_t SUCCESS = 1; static const int SI4703 = 0x10; //0b._001.0000 = I2C address of Si4703 - note that the Wire function assumes non-left-shifted I2C address, not 0b.0010.000W static const uint16_t I2C_FAIL_MAX = 10; //This is the number of attempts we will try to contact the device before erroring out static const uint16_t SEEK_DOWN = 0; //Direction used for seeking. Default is down static const uint16_t SEEK_UP = 1; //Define the register names static const uint16_t DEVICEID = 0x00; static const uint16_t CHIPID = 0x01; static const uint16_t POWERCFG = 0x02; static const uint16_t GPIO2_RDSIEN = 0x02; static const uint16_t CHANNEL = 0x03; static const uint16_t SYSCONFIG1 = 0x04; static const uint16_t SYSCONFIG2 = 0x05; static const uint16_t SYSCONFIG3 = 0x06; static const uint16_t STATUSRSSI = 0x0A; static const uint16_t READCHAN = 0x0B; static const uint16_t RDSA = 0x0C; static const uint16_t RDSB = 0x0D; static const uint16_t RDSC = 0x0E; static const uint16_t RDSD = 0x0F; static const uint16_t RDSIEN = 0x0F; static const uint16_t RDSAH = 0x00; static const uint16_t RDSAL = 0x01; static const uint16_t RDSBH = 0x02; static const uint16_t RDSBL = 0x03; static const uint16_t RDSCH = 0x04; static const uint16_t RDSCL = 0x05; static const uint16_t RDSDH = 0x06; static const uint16_t RDSDL = 0x07; //Register 0x02 - POWERCFG static const uint16_t SMUTE = 15; static const uint16_t DMUTE = 14; static const uint16_t SKMODE = 10; static const uint16_t SEEKUP = 9; static const uint16_t SEEK = 8; static const uint16_t RDS_VERB = 11; static const uint16_t MONO = 1; //Register 0x03 - CHANNEL static const uint16_t TUNE = 15; //Register 0x04 - SYSCONFIG1 static const uint16_t RDS = 12; static const uint16_t DE = 11; //Register 0x05 - SYSCONFIG2 static const uint16_t SPACE1 = 5; static const uint16_t SPACE0 = 4; //Register 0x06 - SYSCONFIG 3 static const uint16_t VOLEXT = 8; //Register 0x0A - STATUSRSSI static const uint16_t RDSR = 15; static const uint16_t STC = 14; static const uint16_t SFBL = 13; static const uint16_t AFCRL = 12; static const uint16_t RDSS = 11; static const uint16_t STEREO = 8; }; #endif4 строка говорит что нет . Конструктор с 4(четырьмя) int есть , а с 3(тремя)- отсутсвует
запустили ардуино иде с диска д -- и все заработало. чудеса... спасибо всем за помощь! методом тыка нашлась проблема... не ожидал такого от программы
запустили ардуино иде с диска д -- и все заработало. чудеса... спасибо всем за помощь! методом тыка нашлась проблема... не ожидал такого от программы
так в чем причина была? или просто "заработало" - и успокоились?
вот неизвестно, с диска ц не хотело ардуино иде нормально работать :( выдавало такую ошибку. и не помогал запуск от админа даже
вот неизвестно, с диска ц не хотело ардуино иде нормально работать :( выдавало такую ошибку. и не помогал запуск от админа даже
а у вас на каком диске иде стояла?
ардуино иде была установлена на системный диск С в папку program files x86. ОС Windows 8.1 При попытке положить библиотеку или любой файл в папку спрограммой, спрашивался запрос. Хотя контроль учетных записей был выключен. При скачке портативной установке и складывании ее на диск Д. И при работе всех библиотек уже оттуда. Все заработало с первого раза и без корректировок. Вот такие чудеса)
Просто три раза на стуле провернулись, мобилу вверх подбросили и сожгли шкурку таракана. Заработало!
Вангую - запускали ярлыком с рабочего стола IDE со старыми либами. А новую распаковали хрен знает куда - главное же что на диск цэ.
При компиляции получаю вот такую ошибку: "no matching function for call to 'Si4703_Breakout::Si4703_Breakout(int&, int&, int&)". Выше это обсуждалось, но проблема там сама куда то пропала. Что, уважаемые, конкретно надо посмотреть - сделать? Спасибо!
При компиляции получаю вот такую ошибку: "no matching function for call to 'Si4703_Breakout::Si4703_Breakout(int&, int&, int&)". Выше это обсуждалось, но проблема там сама куда то пропала. Что, уважаемые, конкретно надо посмотреть - сделать? Спасибо!
Если Вы хотите использовать чей-то готовый скетч, то и библиотеки Вам нужны именно те, что использовал автор скетча, а не любые. Или ищите ту библиотеку или исправляйте скетч под ту, что есть у Вас. Скорее всего они отличаются.
А что посмотреть, написано в конце сообщения #1
Я это смотрел Вот что записано в файле Si4703_Breakout.h:
Si4703_Breakout::Si4703_Breakout (int resetPin, int sdioPin, int sclkPin, int rdsintPin) { _rdsintPin = rdsintPin; _resetPin = resetPin; _sdioPin = sdioPin; _sclkPin = sclkPin;Библиотека Si4703_Breakout шла от автора вместе со скетчем. Я поэтому и спросил, что все от автора, а в итоге ошибка.
Ну так в библиотеке 4 параметра, а в скетче, судя по ошибке, только три. Разбирайтесь, что за пин там забыли.
Снова все сделал с нуля и ошибка выглядит так: " no matching function for call to 'Si4703_Breakout::Si4703_Breakout(const int&, const int&, const int&, const int&)'
Все четыре пина присутствуют. Чего не хватает? Х.З.!
смотрите какую библиотеку подхватывает и какую должен подхватывать
Разобрался, все залилось! В скачанном архиве в папках перепутаны файлы. Наверное чтобы жизнь медом не казалась! Спасибо!