не компилируется код на другом компьютере

multimax
Offline
Зарегистрирован: 07.11.2017

Как такое может быть, что на одном компьютере компилируется код, на другом нет? У меня 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&&)

 

Как вы поняли, это код фм радио. Не суть. Почему при одинаковых папках с программой, библиотеке, коде. На одном компьютере это компилиурется, на втором выдает ошибку?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Строго говоря, настройки компилятора могут быть разные, они могут храниться в том же реестре, и то, что вы кинули товарищу всю IDE - ещё ничего не решает, так сказать: настройки компилятора могут подхватываться с его машины. А при параноидальных настройках компилятор очень придирчив к малейшему чиху.

Вопрос: в файле Si4703_Breakout.h имеется объявление конструктора с тремя параметрами - Si4703_Breakout(int, int, int) ?

multimax
Offline
Зарегистрирован: 07.11.2017


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;
};

#endif

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

4  строка говорит что нет . Конструктор с 4(четырьмя) int есть , а с 3(тремя)- отсутсвует

multimax
Offline
Зарегистрирован: 07.11.2017

запустили ардуино иде с диска д -- и все заработало. чудеса... спасибо всем за помощь! методом тыка нашлась проблема... не ожидал такого от программы

b707
Offline
Зарегистрирован: 26.05.2017

multimax пишет:

запустили ардуино иде с диска д -- и все заработало. чудеса... спасибо всем за помощь! методом тыка нашлась проблема... не ожидал такого от программы

так в чем причина была? или просто "заработало" - и успокоились?

multimax
Offline
Зарегистрирован: 07.11.2017

вот неизвестно, с диска ц не хотело ардуино иде нормально работать :( выдавало такую ошибку. и не помогал запуск от админа даже

b707
Offline
Зарегистрирован: 26.05.2017

multimax пишет:

вот неизвестно, с диска ц не хотело ардуино иде нормально работать :( выдавало такую ошибку. и не помогал запуск от админа даже

а у вас на каком диске иде стояла?

multimax
Offline
Зарегистрирован: 07.11.2017

ардуино иде была установлена на системный диск С в папку program files x86. ОС Windows 8.1 При попытке положить библиотеку или любой файл в папку спрограммой, спрашивался запрос. Хотя контроль учетных записей был выключен. При скачке портативной установке и складывании ее на диск Д. И при работе всех библиотек уже оттуда. Все заработало с первого раза и без корректировок. Вот такие чудеса)

sadman41
Offline
Зарегистрирован: 19.10.2016

Просто три раза на стуле провернулись, мобилу вверх подбросили и сожгли шкурку таракана. Заработало!

Вангую - запускали ярлыком с рабочего стола IDE со старыми либами. А новую распаковали хрен знает куда - главное же что на диск цэ.

samand587
Offline
Зарегистрирован: 21.02.2020

При компиляции получаю вот такую ошибку: "no matching function for call to 'Si4703_Breakout::Si4703_Breakout(int&, int&, int&)".  Выше это обсуждалось, но проблема там сама куда то пропала. Что, уважаемые, конкретно надо посмотреть - сделать? Спасибо!

kalapanga
Offline
Зарегистрирован: 23.10.2016

samand587 пишет:

При компиляции получаю вот такую ошибку: "no matching function for call to 'Si4703_Breakout::Si4703_Breakout(int&, int&, int&)".  Выше это обсуждалось, но проблема там сама куда то пропала. Что, уважаемые, конкретно надо посмотреть - сделать? Спасибо!

Если Вы хотите использовать чей-то готовый скетч, то и библиотеки Вам нужны именно те, что использовал автор скетча, а не любые. Или ищите ту библиотеку или исправляйте скетч под ту, что есть у Вас. Скорее всего они отличаются.

А что посмотреть, написано в конце сообщения #1

samand587
Offline
Зарегистрирован: 21.02.2020

kalapanga пишет:
...Или ищите ту библиотеку или исправляйте скетч под ту, что есть у Вас. Скорее всего они отличаются. А что посмотреть...

Я это смотрел Вот что записано в файле 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 шла от автора вместе со скетчем. Я поэтому и спросил, что все от автора, а в итоге ошибка. 
kalapanga
Offline
Зарегистрирован: 23.10.2016

samand587 пишет:

Библиотека Si4703_Breakout шла от автора вместе со скетчем. Я поэтому и спросил, что все от автора, а в итоге ошибка. 

Ну так в библиотеке 4 параметра, а в скетче, судя по ошибке, только три. Разбирайтесь, что за пин там забыли.

samand587
Offline
Зарегистрирован: 21.02.2020

kalapanga пишет:
... только три. Разбирайтесь, что за пин там забыли.

Снова все сделал с нуля и ошибка выглядит так: " no matching function for call to 'Si4703_Breakout::Si4703_Breakout(const int&, const int&, const int&, const int&)'

Все четыре пина присутствуют. Чего не хватает? Х.З.!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

смотрите какую библиотеку подхватывает и какую должен подхватывать

samand587
Offline
Зарегистрирован: 21.02.2020

Разобрался, все залилось! В скачанном архиве в папках перепутаны файлы. Наверное чтобы жизнь медом не казалась! Спасибо!