Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - [Linker error] undefined reference to `vsync'  & simili
Forum - C/C++ - [Linker error] undefined reference to `vsync' & simili

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
fabio194 (Normal User)
Newbie


Messaggi: 5
Iscritto: 28/01/2010

Segnala al moderatore
Postato alle 11:12
Giovedì, 28/01/2010
Salve, sto cercando di fare il mio primo programmino di grafica con Dev-C++ ma ognivolta che compilo il file mi da questo tipo di errore e scrive "  ld returned 1 exit status " alla fine. Ho girato altri forum in cui dicono che devo includere altri tipi di librerie come "liballeg.a" e simili ma per quanto provi non c'e' modo. Io "smanetto" trammite un emulatore da Ubuntu e mi mi e venuto in mente che potrebbe essere questo il fatidico problema, vi scrivo il codice qui sotto nella speranza che qualcuno mi dia una soluzione, magari facile da interpretare per un ragazzo che ha iniziato a programmare da non piu di 3 mesi... comunque vada grazie del aiuto :)


Codice sorgente - presumibilmente C++

  1. #include <allegro.h>
  2.  
  3.  
  4. void init();
  5. void deinit();
  6.  
  7. BITMAP *buf,*sprite,*sfondo,*sagoma;
  8. PALETTE colori;
  9.  
  10. int yarcere,xarcere,xtabella,ytabella;
  11.  
  12.     void doppiobuffering()//creo schermata
  13. {
  14.  vsync();
  15.  blit(buf, screen, 0, 0, 0, 0, 1200, 900);
  16.  clear(buf);
  17. }
  18.      void player()//creo personaggio
  19.          {
  20.   draw_sprite(buf, sprite, xarcere, yarcere);
  21. }
  22.          void movimento()//creo movimento
  23. {
  24.    if(key[KEY_UP]) {   //su
  25.                 yarcere=yarcere-2;
  26.                 if(yarcere<=0){
  27.                 yarcere=0;
  28.         }
  29.         }
  30.    if(key[KEY_DOWN]){      //giu
  31.                 yarcere=yarcere+2;
  32.                 if(yarcere>=900){
  33.                 yarcere=900;
  34.         }
  35.         }      
  36. }
  37.      void fondale(){ //creo disegno sfondo
  38.                 blit(sfondo,buf,0,0 ,0,0,1200,900);
  39.         }
  40.         void tabella(){ //creo bersaglio
  41.        
  42.         draw_sprite(buf, sagoma, xtabella, ytabella);    
  43.                  
  44.                  }
  45.                  
  46.         void movimentotabella(){  //imposto movimento tabella
  47.                  if(ytabella<=0) {
  48.                                                   ytabella=ytabella+2;
  49.                                                    }
  50.                   if(ytabella>=900) {
  51.                                                   ytabella=ytabella-2;
  52.                                                    }
  53.                  }
  54.  
  55.  
  56. int main() {
  57.         init();
  58.  
  59.         while (!key[KEY_ESC]) {  //programma completo
  60.                 doppiobuffering();
  61.                 fondale();
  62.                 tabella();
  63.                 movimentotabella();
  64.                 player();
  65.                 movimento();/* put your code here */
  66.        
  67.         }
  68.  
  69.         deinit();
  70.         return 0;
  71. }
  72. END_OF_MAIN()
  73.  
  74. void init() {
  75.         int depth, res;
  76.         allegro_init();
  77.         depth = desktop_color_depth();
  78.         if (depth == 0) depth = 32;
  79.         set_color_depth(depth);
  80.         res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 1200, 900, 0, 0);
  81.         if (res != 0) {
  82.                 allegro_message(allegro_error);
  83.                 exit(-1);
  84.         }
  85.  
  86.         install_timer();
  87.         install_keyboard();
  88.         install_mouse();
  89.        
  90.         buf=create_bitmap(900,1200);            //setto e carico immagini
  91.         clear(buf);
  92.         sfondo=load_bmp("foresta.bpm",colori);
  93.         sprite=load_bmp("arcere.bmp",colori);
  94.         sagoma=load_bmp("bersaglio.bmp",colori);
  95.         xtabella=1990;
  96.         ytabella=1;
  97.         yarcere=1;
  98.         xarcere=10;/* add other initializations here */
  99. }
  100.  
  101. void deinit() {
  102.         clear_keybuf();
  103.         destroy_bitmap(buf);            //le distruggo
  104.     destroy_bitmap(sprite);
  105.  
  106.    destroy_bitmap(sfondo);
  107.    destroy_bitmap(sagoma);
  108. /* add other deinitializations here */
  109. }




spero di aver inserito il codice come codice.

Ultima modifica effettuata da fabio194 il 28/01/2010 alle 11:13
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:30
Giovedì, 28/01/2010
La vsync sarà una funzione definita nella libreria allegro. Devi aggiungere la libreria in questione (non so se è quella indicata) nelle opzioni di progetto in modo che il linker la possa utilizzare.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 11:52
Giovedì, 28/01/2010
http://www.allegro.cc/forums/thread/595239

qui hanno avuto lo stesso problema... non fare caso ai numeri di versione (4.2.2) perchè il thread è vecchio, ma usa la stessa tecnica per risolvere il tuo problema.

PM Quote
Avatar
fabio194 (Normal User)
Newbie


Messaggi: 5
Iscritto: 28/01/2010

Segnala al moderatore
Postato alle 12:09
Giovedì, 28/01/2010
inutile sono un caso disperato T.T

cioè io devo inserire uno di quei codici in questo modo giusto?

#include " liballeg-4.2.2.so"

o in un altro modo?

mi scuso della mia ignoranza che vi fa perdere tempo prezioso...

PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 14:36
Giovedì, 28/01/2010
no, devi passare al compilatore l'opzione "-lalleg", inseriscila nel progetto sotto la voce "Opzioni linker", "C flags" o qualcosa di simile

PM Quote
Avatar
fabio194 (Normal User)
Newbie


Messaggi: 5
Iscritto: 28/01/2010

Segnala al moderatore
Postato alle 15:24
Giovedì, 28/01/2010
credo di aver capito! grazie di tutto ora testo su windows xke l emulatore non regge =) siete mitici!

PM Quote
Avatar
fabio194 (Normal User)
Newbie


Messaggi: 5
Iscritto: 28/01/2010

Segnala al moderatore
Postato alle 15:41
Giovedì, 28/01/2010
x compilare compila xò quando si apre mi dice errore e mi dice termina adesso! son troppo esaurito x capire cos'è quindi passo e chiudo =P

PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 16:22
Giovedì, 28/01/2010
almeno abbiamo risolto uno dei problemi :)
se compila e parte vuol dire che il codice è a posto da un punto di vista di compilazione & linking.

adesso si passa alla fase "vediamo perchè non funziona?" :)

PM Quote
Avatar
fabio194 (Normal User)
Newbie


Messaggi: 5
Iscritto: 28/01/2010

Segnala al moderatore
Postato alle 20:01
Venerdì, 29/01/2010
Mitico ragazzi! ho tirato via lo sfondo che era un immagine alquanto pesante e ora runna alla perfezzione! appena finisco di creare il mio bel giochetto lo allego... lo so che a pochi interesserà ma e solo per mia soddisfazioen personale! Grazie di tutto!!!:k:

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo