Installa codelite che ti do una mano, edit pensandoci un attimo, non e che ti sei scordato di aggiungere le librerie al linker? Tipo un -lm ?
Installa codelite che ti do una mano, edit pensandoci un attimo, non e che ti sei scordato di aggiungere le librerie al linker? Tipo un -lm ?
ma in teoria il linker "lo fa lui", non esiste di scrivere, che so, gcc vattelapesc -lm, tu gli dai il comando da menu "Compile", o "Build", o anche "Run" (chiaramente se non è compilato Run compila anche), insomma, è un ambiente di sviluppo non un editor tipo vi/emacs
mi starebbe pure bene, ma ho praticamente provato tutto con tutto stile Tony Tough, voglio dire che non saprei più in che menu guardare
Ultima modifica di LordOrion; 19-11-18 alle 09:53
+22.437 Messaggi dillà...
Il mio blog: Notti a (Video)Giocare <- (100% ADS FREE!!)
CPU: i7-11700K@5GHz|GPU: RTX-4070 Super Trinity |RAM: 64GB DDR4@3200MHz|SSD: 980 Pro + 2x 970EVO Plus|HOTAS Warthog|TrackIR 5|
+22.437 Messaggi dillà...
Il mio blog: Notti a (Video)Giocare <- (100% ADS FREE!!)
CPU: i7-11700K@5GHz|GPU: RTX-4070 Super Trinity |RAM: 64GB DDR4@3200MHz|SSD: 980 Pro + 2x 970EVO Plus|HOTAS Warthog|TrackIR 5|
Lupo, la sezione informatica ti puzza?
https://r.tapatalk.com/shareLink?url...&share_type=sf
Inviato tramite posta pneumatica
ok, come supponevo: IMHO Il problema non e' che il compilatore non trova i tuoi .h, ma che non stai compilando/linkando ngulax.c:
Se non riuscisse ad includere ngulax.h avresti un errore tipo "cannot include ngulax.h", invece il compilatore si lamenta del fatto che non riesce ad trovare la definizione di f().
Puoi verificare che i .h siano inclusi in modo semplice: edita ngulax.h e aggiungici la seguente linea all'inizio:
#error "Chittemmuort ngulax.h"
Se compili adesso dovresti avere l'errore "Chittemmuort ngulax.h", che dimostra il fatto che i .h sono inclusi regolarmente.
Fatto questo fai la stessa cosa con ngulax.c:
#error "Chittemmuort ngulax.c"
Se ho ragione, adesso NON dovresti vedere l'errore sopra (rimuovi l'altro #error da ngulax.h).
Dopodiche' controlla di aver aggiunto ngulax.c al progetto o che non ci sia altro che ti impedisce di compilarlo.
Also, puoi postare l'esatto errore che ti sputa fuori?
(Che poi e' proprio la prima cosa che avresti dovuto fare )
Ultima modifica di LordOrion; 19-11-18 alle 16:15
+22.437 Messaggi dillà...
Il mio blog: Notti a (Video)Giocare <- (100% ADS FREE!!)
CPU: i7-11700K@5GHz|GPU: RTX-4070 Super Trinity |RAM: 64GB DDR4@3200MHz|SSD: 980 Pro + 2x 970EVO Plus|HOTAS Warthog|TrackIR 5|
Allora, l'errore esatto.
Premetto che se provo a fare #include "nonesistolol.h", il compilatore se ne accorge e mi dice:
[Error]nonesistolol.h: No such file or directory
compilation terminated.
Se invece il .h esiste e chiamo una sua routine, ottengo una cosa del tipo:
nomeprogramma.c(text+0x17): undefined reference to 'nomeroutine'
[Error] ld returned 1 exit status
Ok, ma quest aggiunge poco a quello che sappiamo gia'.
Ok, questo ci dice che non e' il compilatore che si lamenta, ma il linker (ld) che non riesce a trovare la funzione nomeroutine(). E sommato al (non) messaggio sopra ci dice che gli header li trova correttamente.
Immagino che il .h abbia anche un corrispondente .c dove e' definta nomeroutine().
Per capirci: immagino che il progetto sia una cosa di almeno 3 file:
header.h:
header.c:Codice:#ifndef _HEADER_ #define _HEADER_ // Dichiarazione: extern int nomeroutine(); #endif
main.c:Codice:#include "header.h" // Definizione: int nomeroutine() { // Tanto codice interessante... return sarcazzo; }
Sei sicuro che header.c venga compilato? Prova a modificarlo cosi:Codice:#include "header.h" int main ( void ) { // Uso di nomeroutine: int pippo = nomeroutine(); return sarcazzo2; }
header.c:
Codice:#include "header.h" #error "SONO COMPILATO OK!" int nomeroutine() { // codice return sarcazzo; }
Compila e dimmi cosa ti dice
Ultima modifica di LordOrion; 21-11-18 alle 13:54
+22.437 Messaggi dillà...
Il mio blog: Notti a (Video)Giocare <- (100% ADS FREE!!)
CPU: i7-11700K@5GHz|GPU: RTX-4070 Super Trinity |RAM: 64GB DDR4@3200MHz|SSD: 980 Pro + 2x 970EVO Plus|HOTAS Warthog|TrackIR 5|
cosa dovrebbe fare #error?!
cmq stesso messaggio di errore
E' una utile direttiva di preprocessore che genera un errore con un messagio utente.
Si usa per varie cose, ma a noi interessa verificare che header.c e' compilato o meno. In pratica se compare l'errore allora significa che header.c e' compilato (caso 1), in caso contrario no (caso 2).
il caso 1) si risolve assicurandosi che header.obj sia nella lista degli oggetti da linkare per generare l'eseguibile.
il caso 2) si risolve aggiungendo header.c al progetto e header.obj alla lista di link (come caso 1).
+22.437 Messaggi dillà...
Il mio blog: Notti a (Video)Giocare <- (100% ADS FREE!!)
CPU: i7-11700K@5GHz|GPU: RTX-4070 Super Trinity |RAM: 64GB DDR4@3200MHz|SSD: 980 Pro + 2x 970EVO Plus|HOTAS Warthog|TrackIR 5|
vabbè stica, ho copiato tutto il contenuto dei punto c nel programma principale e affancuuculo.
mi rompe xke ho 300 prototipi di funzioni ovviamente tutti in testa al programma, sicchè il main me lo devo cercare ogni volta
+22.437 Messaggi dillà...
Il mio blog: Notti a (Video)Giocare <- (100% ADS FREE!!)
CPU: i7-11700K@5GHz|GPU: RTX-4070 Super Trinity |RAM: 64GB DDR4@3200MHz|SSD: 980 Pro + 2x 970EVO Plus|HOTAS Warthog|TrackIR 5|
il punto è orion che io NON SO COME FARE QUELLO CHE DICI TU.
Quando ero su linux facevo un makefile e gli dicevo io cosa fare e cosa no.
Qui no, fa lui, e non so come fargli cambiare idea.