ďťż
 
 
   Problem z kompilacją...
 
 

Tematy

 
    
 

 

 

 

Problem z kompilacją...





macylapka - 24-08-2007 07:47
Koledzy mam problemy z książkowym przykładem, może mi ktoś pomuc i wyjaśnić gdzie jest błąd ? Oto kody :

printBinary.h
void printBinary(const unsigned char val); printBinary.cpp
#include <iostream>

void printBinary(const unsigned char val) {
 for(int i=7;i>=0;i--)
  if(val & (1<<i))
    std::cout <<"1";
  else
    std::cout <<"0";
} Bitwise.cpp
#include <iostream>
#include "printBinary.h"

using namespace std;

#define PR(STR, EXPR) \
 cout<< STR; printBinary(EXPR); cout<<endl;

int main() {
unsigned int getval;
unsigned char a,b;
cout << "Wprowadz liczbe z zakresu od 0 do 255: ";
cin>>getval; a=getval;
PR("a w zapisie dwojkowym: ", a);
cout << "Wprowadz liczbe z zakresu od 0 do 255: ";
cin>>getval; b=getval;
PR("b w zapisie dwojkowym: ", b);
PR("a | b = ", a | b);
PR("a & b = ", a & b);
PR("a ^ b = ", a ^ b);
PR("~a = ", ~a);
PR("~a = ", ~b);
unsigned char c = 0x5A;
PR("c w zapisie dwojkowym: ",c);
a|=c;
PR("a |= c; a= ",a);
a&=c;
PR("b &= c; b= ",b);
a^=c;
PR("b ^= a; b= ",b);
} Podczas kompilacji wyświetla takie problemy :
/tmp/cctxJacm.o: In function `main':
Bitwise.cpp:(.text+0xab): undefined reference to `printBinary(unsigned char)'
Bitwise.cpp:(.text+0xf5): undefined reference to `printBinary(unsigned char)'
Bitwise.cpp:(.text+0x122): undefined reference to `printBinary(unsigned char)'
Bitwise.cpp:(.text+0x14f): undefined reference to `printBinary(unsigned char)'
Bitwise.cpp:(.text+0x17c): undefined reference to `printBinary(unsigned char)'
/tmp/cctxJacm.o:Bitwise.cpp:(.text+0x1a8): more undefined references to `printBinary(unsigned char)' follow
collect2: ld returned 1 exit status



ponton - 24-08-2007 07:56
pomÓc!

Błędów w przykładach nie ma. Błędów podczas kompilacji też nie ma. Błędy są podczas linkowania, bo nie linkujesz tych dwóch plików razem.



elwis - 24-08-2007 08:18
istotnie błędy tu wyrzuca linker. Spróbuj skompilować tak:
g++ -c printBinary.cpp - o printBinary.o
g++ -c Bitwise.cpp -o Bitwise.o
g++ printBinary.o Bitwise.o -o bitwise



macylapka - 24-08-2007 10:18
elwis napisał/ła
Nie udaje sie skompilować tej 3 linijki :
g++ printBinary.o Bitwise.o -o bitwise W 2-óch pierwszych przypadkach kopilatro wykonuje pliki *.o
a w 3 ciej:

linker input file unused because linking not done
g++: Bitwise.o: linker input file unused because linking not done ponton napisał/ła
O ile mi wiadomo to jest FORUM o tematyce informatycznej a nie humanistycznej a tym bardziej o ortografi jezyka polskiego. Kolego jezeli nie możesz POMÓC w kąkretny sposób to chociaż nie przeszkadzaj.

Nie zaóważyłem i pomiędzy g++ a printBinary wpisałem -c którego tam nie miałobyć :P. Wiec wszystkie komedny do linkera są poprawne :D. Co do tego łączenia to jak to działa z tymi plikami ? Jak plik z nagłówkiem .h "heater ?" łączy sie z dwoma plikami *.cpp ? I jak te pliki są wykorzystywane w tym programie ?



elwis - 24-08-2007 10:51
heh.. O takie podstawy się pytasz? Powinno być w książce ;p. To polega na tym, że plik cpp ładuje nagłówki( ang. headers), żeby wiedzieć, co może odpalić znajdującego się w innych plikach cpp. Po kompilacji pliku cpp powstaje półprodukt i dopiero linkując, czyli łącząc składowe półprodukty powstaje binarka.. Ewentualnie możesz do mnie napisać, to ci mogę ci trochę pomóc trochę prywatnie, bo nie ma sensu tak bezszczelnie forum zaśmiecać ;p
Edit:
Zrobiłem błąd w pierwszej linijce. Nie ma być spacji między '-', a 'o'. Jeśli tego nie wyłapałeś, popraw, bo u mnie kompiluje dobrze...



Rad - 24-08-2007 14:20
Ale kombinujecie :) Jak są dwa źródłowe, to wystarczy dać:
g++ jeden.cpp drugi.cpp -o program Czyli w tym przypadku:
g++ printBinary.cpp Bitwise.cpp -o wynik



ponton - 24-08-2007 16:55
kONkretny

Język polski jest językiem używanym na tym forum, więc pisz w nim poprawnie. Pisząc z błędami okazujesz nam brak szacunku. I nie to nic wspólnej z humanizmem.

Poza tym łamiesz regulamin:


4. d) na forum należy pisać poprawnie, bez błędów ortograficznych i interpunkcyjnych, jeżeli masz z tym problemy, to skorzystaj z przycisku "pisownia" przed wysłaniem posta; posty z dużą ilością błędów będą poprawiane lub usuwane.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis