Arduario_0_6.cpp.o: In function `createPowerSocket()':
C:\DOCUME~1\User\IMPOST~1\Temp\build3700649046632444774.tmp/Arduario_0_6.cpp:316: undefined reference to `createSockets(unsigned char)'
è il report della compilazione di arduino...
createPowerSocket() è una funzione creata nello sketch, mentre createSockets(unsigned char) è una funzione di una libreria che ho fatto...
premetto di avere conoscenze di C, ma non riesco a risolvere questo problema, anche perché le altre funzioni della libreria invocate nello sketch le trova... ho provato a fare copia incolla con il nome... ma non risolvo niente... cosa posso fare?
ho visto che nella funzione createPowerSocket() (quella dello sketch) TUTTE le funzioni della libreria generano lo stesso errore, mentre (non so per quale motivo) le stesse chiamate, in un'altra funzione dello sketch vanno tranquillamente...
edit: ho fatto varie prove, mettendo una chiamata della libreria e ha dato errore in tutte le funzioni dello sketch... anche in quella dove ci sono altre chiamate a funzioni della stessa libreria... non ci capisco più niente...
re-edit: ovviamente se nel sorgente della libreria (che non ho detto ma è un file.c) c'è un errore lo segnala...
la libreria deve stare in un file.h che poi importi con un #include "libreria.h"
non credo che la cosa si possa fare anche con un .c, o almeno va contro alle regole per scrivere codice comprensibile agli altri
cmq la libreria la ho importata non è quello il problema... purtroppo...
non so se provare a copiare-incollare tutta la libreria nello sketch per vedere come si comporta... oppure se anzi che un file c trasformarlo in un file cpp....
ma non credo il problema sia riferito al .c anzi che al .cpp... daltronde ciò che va bene in c va anche in cpp...
ah se dalla tua libreria usi un'altra libreria devi importarla anche nel pde perch'è il compilatore arduino non è abbastanza "furbo"
altrimenti non ho capito bene. le librerie si fanno nei file .h e non .c, ma non ho capito bene da quanti e quali file è composto il tuo programma
nel file.h (header) si dichiarano le funzioni, macro e quant'altro.
nel file.c (source) si importa il file.h, si implementano le funzioni dichiarate nel file.h
poi (a regola) si crea un file.o della libreria, che viene linkato poi nella compilazione del main... questo è un passaggio per realizzare un eseguibile in c.... ma in arduino il discorso del linker mi sfugge ancora....
come libreria includo solo la stdlib nel file.c, perché ho bisogno delle varie alloc...
nel file.h ho incluso stdint... che negli sketch che ho visto chiamano inttype... non capisco perché in quanto quella che uso io dovrebbe essere standard...
dici che includendo la libreria nello sketch risolvo?... mi sembra strano ma provare non costa niente...
cmq ho fatto un file.h e un file.c...
p.s. ora capisco perché ci sono inclusioni di inclusioni negli sketch ;D ;D
edit: avevo lasciato commentato la riga che dava errore....
cmq non funziona ancora a includere le librerie nello sketch....
p.s. nel c normale, quando includi qualcosa, il compilatore butta via la riga #include e la sostituisce con tutto il file, un esempio simpatico è un programma che stampa hello word, che da 5 righe diventa molto più di 1000 ;D