Gå til innhold

LØST: Gcc og Cygwin: iostream: No such file or dir


Gjest Slettet+19873487

Anbefalte innlegg

Gjest Slettet+19873487

Hei.

 

Satt og programmerte og neste gang jeg skulle kompilere med gcc i cygwin, så fikk jeg følgende feil:

 

fil.c:1:20: iostream: No such file or directory

 

Og koden kan være så kort som denne:

 

#include <iostream>

 

 

Har prøvd å reinstallere alle pakkene i cygwin, men samme feil.

Noen som vet hva jeg kunne gjort?

Endret av Slettet+19873487
Lenke til kommentar
Videoannonse
Annonse

Når du kompilerer med `gcc' og filnavnet ender med `.c' så antar GCC at du kompilerer et C-program, og ting fungerer ikke hos deg.

 

Når du kompilerer med `gcc' og filnavnet ender med `.cpp' (eller lignende) antar GCC at du kompilerer et C++-program, og ting fungerer hos deg. (edit: dog linkeren feiler så klart om man ikke spesifiserer noen ekstra argumenter)

 

Når du kompilerer med `g++' vil den anta at du kompilerer C++-kode uansett, og ting fungerer hos deg.

Endret av lnostdal
Lenke til kommentar
Gjest Slettet+19873487

Kunne vel ha prøvd MinGW. :)

 

 

Dette har ikke noe med hvordan jeg navngir filen. Jeg satt og kompilerte med samme kommando hele tiden.

gcc program.c && ./program

 

Dette fungerte helt fint. Jeg skrev litt kode, kompilerte og kjørte programmet. Da programmet kjørte så jeg at det var en liten feil, og redigerte koden, og neste gang jeg skulle kompilere, så fikk jeg den feilen. Dette er en feil som bare dukket opp helt plutselig. Jeg har ikke endret på noen filer.

 

Eneste jeg har gjort er:

1. Skrive kode

2. Kompilere

3. Kjøre program

4. Redigere kode

5. Kompilere (med feil)

 

Og nå får jeg den feilen uansett hvilken include-fil jeg bruker.

Lenke til kommentar
Gjest Slettet+19873487

Jeg gjør et forsøk, men ser ikke hvordan det skulle være forskjellig når det fungerte de hundre første gangene.

 

EDIT: Gjorde som du sa. Når jeg prøver "gcc program.cpp" så får jeg bare 6-7 feil med

 

"undefinded reference to 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned int) const'

 

og

 

"undefinded reference to 'std::ios_base::Init::Init()'

Endret av Slettet+19873487
Lenke til kommentar

Da har du i løpet av de 100 gangene hatt tilfeller der en eller flere av disse tingene gjelder:

 

* kompilert/linket med g++ de 100 gangene

* skiftet navn på fila

* kun hatt C-kode i fila

* spesifisert noen sære argumenter til gcc for å "jalle det til"

 

En mulighet er så klart at du har borka installasjonen på et eller annet vis, men det jeg sier om filnavn, gcc, g++, c og c++ gjør seg fortsatt gjeldende.

Endret av lnostdal
Lenke til kommentar

Forsøk med g++; da tar den med riktige argumenter til linkeren også.

 

Altså; kompileringen av C++-kode gjennomføres v.h.a. gcc:

 

lars@ibmr52:~/programming/c$ gcc -Wall -g -c blah.cpp

 

..når man linker C++ går dette også v.h.a. gcc, slik:

 

lars@ibmr52:~/programming/c$ gcc -lstdc++ -o blah blah.o

 

..eventuelt begge skrittene samtidig:

 

lars@ibmr52:~/programming/c$ gcc -Wall -g -lstdc++ blah.cpp

 

..men g++ er like greit:

 

lars@ibmr52:~/programming/c$ g++ -Wall -g  blah.cpp

 

edit:

det er hele tiden snakk om koden (fra blah.cpp):

#include <iostream>

int main(){
 return 0;
}

 

..uten main vil du få en linker-error .. ting kompilerer, men linkes ikke..

Endret av lnostdal
Lenke til kommentar
Gjest Slettet+19873487

Da jeg prøver å kompilere med g++ får jeg bare en masse andre feil. Jeg får heller bare skrive om programmet da. Kan ikke ta all verdens tid det.

 

EDIT: Prøvde dine eksempler ovenfor. Hver gang jeg brukte gcc fikk jeg feilen om at den ikke fant iostream(.h)

Endret av Slettet+19873487
Lenke til kommentar

Hum - okei; om det er snakk om meldinger basert på feil i bruker-koden så er du i mål ... :)

 

edit:

EDIT: Prøvde dine eksempler ovenfor. Hver gang jeg brukte gcc fikk jeg feilen om at den ikke fant iostream(.h)

Har du har kallt filen *.cpp ....? (skal ikke være `iostream.h' .. kun 'iosteam')

Endret av lnostdal
Lenke til kommentar
Gjest Slettet+19873487
Har du har kallt filen *.cpp ....?  (skal ikke være `iostream.h' .. kun 'iosteam')

 

Filen er bare kalt for 'program.c'. Men jeg har prøvd med andre "extensions" også. Jeg vet man skal droppe '.h'. Det er en del av nye standarden. (Som nå begynner å bli en god stund siden.)

 

 

Prøver på c++ i stedet nå, men stringstream ser ikke ut til å bli deklarert..

 

#include <sstream>
stringstream ss;
main()
{
ss << blah;
}

Lenke til kommentar
Gjest Slettet+19873487

Den står der ;)

 

Synes det bare er en veldig merkelig feil. Skulle vel vært en logisk feil, men jeg ser den ikke.

Lenke til kommentar
Gjest Slettet+19873487

Det er mine feil. Jeg fokuserte mest på stringstream'en. Derfor ble den borte. Blah er bare noe rart som vi legger i stringen.

 

 

EDIT: Du hadde helt rett angående "Using namespace std;". Jeg har jo skrevet C-kode tidligere. Og da brukte jeg print og ikke cout, derfor hadde jeg ikke brukt den. Da var det min feil som vanlig :) Takk for ledetråden ;)

Endret av Slettet+19873487
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...