Gå til innhold

[Løst] Kompileringsproblemer i OS X (Undefined symbols for architecture x86_64)


Anbefalte innlegg

Hallo,

 

Jeg har et problem med kompilering av et lite program skrevet i Eclipse på OS X 10.8.2. Kompilatoren jeg bruker er gcc lastet ned gjennom Xcode, og programkoden jeg prøver å kompilere er:

/*
* Main.cpp
*
*  Created on: 3. okt. 2012
*	  Author: henrik
*/

#include <iostream>
#include <string>
using namespace std;

class Struktur{
public:
string kart[10][20];
int kartutvunnet[10][20];
void meny(){
 int kommando = 0;
 while(kommando < 9){
  cout << "*** VELKOMMEN TIL RURITANIAS OLJEFELTOVERSIKT ***\n" << endl;
  cout << "Du har følgende valgmuligheter:" << endl;
  cout << "1) Kjøp et felt\n2) An0er kjøp av et felt\n3) Lag oversiktskart\n4) Oppdater oljeutvinning\n5) Vis et oljeselskap\n6) Finn nabofelt\n8) Avslutt\n" << endl;
  cout << "\nVelg kommando: " << endl;
  cin >> kommando;
  if(kommando == 1){
cout << "\n\n** KJØP ET FELT**" << endl;
cout << "Oppgi feltet som ønskes kjøpt:" << endl;
cout << "Oppgi X-koordinat:" << endl;
int xcoord = cin.get();
cout << "Oppgi Y-koordinat:" << endl;
int ycoord = cin.get();
cout << "Oppgi selskapets navn:" << endl;
string selskap;
selskap = cin.get();
cout << endl;
kjopFunct(xcoord, ycoord, selskap); //Sender koordinater og navn til kjøpsfunksjonen.
  }
  if(kommando == 2){
cout <<"\n\n** AN0ER KJØP AV ET FELT**" << endl;
cout <<"Oppgi feltet som ønskes an0ert:"<< endl;
cout <<"Oppgi X-koordinat:" << endl;
int xcoord = cin.get();
cout <<"Oppgi Y-koordinat:" << endl;
int ycoord = cin.get();
annullerFunct(xcoord, ycoord); //Sender koordinater til an0eringsfunksjonen.
  }
  if(kommando == 3){
cout <<"\n\n** KART OVER OLJEFELT **" << endl;
kartFunct(); //Kaller på kartFunct-metoden, ingen argumenter.
  }
  if(kommando == 4){
cout <<"\n\n** OPPDATER UTVINNINGSDATA **" << endl;
cout <<"Oppgi X-koordinat:" << endl;
int xcoord = cin.get();
cout <<"Oppgi Y-koordinat:" << endl;
int ycoord = cin.get();
if(kart[xcoord][ycoord] != "0"){ //Hvis det eksisterer data i valgte koordinater utføres:
 cout <<"Hvor mye er utvunnet (oppgis i fat)?" << endl;;
 int utvunnet = cin.get();
 oppdaterFunct(xcoord, ycoord, utvunnet); //Kaller på oppdaterFunct med koordinater og inndata.
}
else{ //Hvis det ikke eksisterer data i (x,y), kjøres:
 cout <<"\nDette oljefeltet har ingen eier." << endl;
 cout <<"\nTrykk ENTER for å fortsette." << endl; //Venter på linjeskift.
 cin.get();
 cin.get();
 cout <<"\n\n" << endl;
}
  }
  if(kommando == 5){
visFunct();
  }
  if(kommando == 6){
cout <<"\n\n** VIS NABOFELT **" << endl;
cout <<"Oppgi X-koordinat:" << endl;
int xcoord = cin.get();
cout <<"Oppgi Y-koordinat:" << endl;
int ycoord = cin.get();
naboFunct(xcoord, ycoord); //Kaller på nabofunksjonen med inntastede koordinater.
  }
  if(kommando == 8){
kommando = 9;
  }
 }
}
void kjopFunct(int x, int y, string selskap){ //Kjøp-funksjon som tar inn koordinater og navn. Returnerer ingenting (void).
 kart[x][y] = selskap;
 cout << "La til " << kart[x][y] << " i plass (" << x << "," << y <<(").") << endl;
 cout << "Trykk ENTER for å fortsette." << endl;
 cin.get();
 cin.get();
 cout << "\n\n" << endl;
}
void annullerFunct(int x, int y){ //An0erer et kjoep i koordinatene.
 if(kart[x][y] != "0"){ //Hvis det eksisterer data i (x,y):
  cout << "\nFjernet " << kart[x][y] << " i plass (" << x << "," << y << ")." << endl;
  kart[x][y] = "0"; //Toemmer innholdet i (x,y).
 }
 else{
  cout << "Ingenting å fjerne, ingen kjøp gjennomført på feltet." << endl;
 }
 cout << "Trykk ENTER for å fortsette." << endl;
 cin.get();
 cin.get();
 cout << "\n\n" << endl;
}
void kartFunct(){ //Viser et kart over hele oljeområdet, ingen parametre trengs.
 for(int i = 0; i<10; i++){
  for(int j = 0; j<20; j++){
if(kart[i][j] != "0"){
 cout << "X\t" << endl; //Hvis felt funnet: Skriv X!
}
else{
 cout << ".\t" << endl; //Hvis felt ikke funnet: Skriv .!
}
  }
  cout << endl;
 }
 cout << "Trykk ENTER for å fortsette." << endl;
 cin.get();
}
void oppdaterFunct(int x, int y, int utv){
 kartutvunnet[x][y] = utv;
 cout << "Oppdaterte utvinning i plass " << x << "," << y << " med: " << utv << " fat." << endl;
 cout << "Trykk ENTER for å fortsette." << endl;
 cin.get();
 cin.get();
 cout << "\n\n" << endl;
}
int checkFunct(string navn){ //Sjekker om navn (parameter) finnes i kart-arrayen. Hvis den finnes returneres true.
 bool sjekker = false;
 for(int i = 0; i < 10; i++){
  for(int j = 0; j < 20; j++){
if(navn == kart[i][j]){
 sjekker = true;
}
  }
 }
 if(sjekker){
  return 1;
 }
 else{
  return 0;
 }
}
void visFunct(){
 cout << "\n\n** VIS ET OLJESELSKAP **" << endl;
 cout << "Tast inn oljeselskapets navn: " << endl;;
 string navn;
 navn = cin.get();
 if(checkFunct(navn) == 1){ //Sender inntastet navn til en sjekkefunksjon, for å se om det eksisterer i arrayen.
  cout << "\nDATA FOR: " << navn << "\n" << endl;
  cout << "Felter eid: \n" << endl;
  for(int i = 0; i < 10; i++){
for(int j = 0; j < 20; j++){
 if(navn == kart[i][j]){
  cout << i << "," << j << endl;
 }
}
  }
  int sum = 0;
  for(int i = 0; i < 10; i++){ //Summerer alle verdier i felter eid av selskapet.
for(int j = 0; j < 20; j++){
 if(navn == kart[i][j]){
  sum += kartutvunnet[i][j];
 }
}
  }
  cout << "Summen av oljefat utvunnet av " << navn << " er: " << sum << endl;
 }
 else{ //Hvis checkFunct returnerer false (selskap finnes ikke):
  cout << "\nOljeselskap ikke funnet." << endl;
 }
 cout << "Trykk ENTER for å fortsette." << endl;
 cin.get();
 cin.get();
 cout << "\n\n" << endl;
}
void naboFunct(int x, int y){ //Viser informasjon om nabofelt.
 cout << "\nNabofelt til " << x << "," << y << ":" << endl;
 //Doble løkker for å gå gjennom arrayen, og finne ut om vi er i hjoerner/kanter.
 for(int i = (y-1); i <= (y<<1); i++){ //Starter i (y-1) får å få med nabofeltet til venstre.
  for(int j = (x-1); j <= (x+1); j++){ //Starter i (x-1) for å få med nabofeltet opp.
if(j < 0 || j > 9 || i < 0 || i > 19){ //Hvis vi er utenfor arrayen i x eller y:
 continue; //Hopper over dette stadiet av løkken, og kjører løkken for neste verdier av i og j.
}
if((j != x && i != y) || (j == x && i == y)){ //Hvis j og i er ulike x og y, eller j og i er like x og y:
 continue; //Hopper over dette stadiet av løkken, og kjører løkken for neste verdier av i og j.
}
if(kart[j][i] != "0"){ //Hvis det eksisterer data i nabofelt(ene):
 cout << "Feltet " << j << "," << i << " er eid av " << kart[j][i] << "." << endl;
}
else{ //...eller hvis det ikke eksisterer data i nabofelt(ene):
 cout << "Feltet " << j <<"," << i << " er ikke eid av noen." << endl;
}
  }
 }
 cout << "Trykk ENTER for å fortsette." << endl;
 cin.get();
 cin.get();
 cout << "\n\n" << endl;
}
};

class Main{
int main(){
 Struktur *strukt = new Struktur;
 strukt->meny();

 return 0;
}
};

 

Når jeg prøver å bygge programmet, returneres:

vqmhk2.jpg

 

 

Såvidt jeg kan forstå har dette problemet med linking av biblioteker å gjøre, og kanskje er det et problem med 32/64 bit? Jeg er ikke spesielt flink med dette, jeg vil bare at koden min skal kompilere uten feil.

 

På forhånd takk for all hjelp!

 

 

Edit: Før noen spør - ja, dette er et oversatt javaprogram :p

Endret av Carana
Lenke til kommentar
Videoannonse
Annonse

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...