Projekt Allegro 5 podzielony na kilka plików
Ostatnio zmodyfikowano 2014-06-21 13:56
McAffey Temat założony przez niniejszego użytkownika |
Projekt Allegro 5 podzielony na kilka plików » 2014-06-19 15:16:21 Witajcie, tworzę projekt Allegro 5 podzielony na kilka plików i mam problem z kompilacją. W pliku .hpp mam deklarację klasy w której korzystam z typu ALLEGRO_BITMAP, jednak kompilator woła, że "'ALLEGRO_BITMAP' does not name a type" pomimo iż includuję w tym pliku .hpp to co w głównym pliku .cpp: #include <allegro5/allegro.h> #include "allegro5/allegro_image.h" Potrafi ktoś wytłumaczyć jak to rozwiązać, żeby móc we wszystkich plikach korzystać z typów i funkcji Allegro ? Czy powtórzyć gdzieś inicjalizacje Allegrowskie ( al_init()/ al_init_image_addon()) ? |
|
Jacob99 |
» 2014-06-19 15:48:57 Pokaż jak podzieliłeś kod na pliki.
|
|
McAffey Temat założony przez niniejszego użytkownika |
» 2014-06-19 16:02:46 Standardowo, pokażę wersję uszczuploną tylko do testów : główny plik main.cpp w którym mam includowane : #include <allegro5/allegro.h> #include "allegro5/allegro_image.h" #include "allegro5/allegro_native_dialog.h" #include "plik_naglowkowy.hpp" a potem w funkcji int main() wszystkie potrzebne inicjalizacje, czyli m.in. al_init() i al_init_image_addon() . W pliku nagłówkowym plik_naglowkowy.hpp mam tylko deklarację klasy a w niej zmienną typu ALLEGRO_BITMAP. Plik z definicją tej klasy nie ma znaczenia. Pokomentowałem teraz wszystko tak, że gdy zakomentuję jeszcze tę linijkę : ALLEGO_BITMAP * bitmapa; to wszystko się kompiluje, a gdy ją "odkryję" to zostaje tylko komunikat o tym że kompilator nie zna takiego typu. Dla rozwiązania problemu pousuwałem pozostałe pliki i mam teraz "warunki laboratoryjne", jednak nie potrafię tego rozwiązać, samo includowanie plików: #include <allegro5/allegro.h> #include "allegro5/allegro_image.h" nie rozwiązuje problemu. |
|
SeaMonster131 |
» 2014-06-19 16:14:14 Niech plik *.h includuje allegro_image oraz dodaj słówko extern przed deklaracją zmiennej: #include <allegro5/allegro5_image.h>
extern ALLEGRO_BITMAP * img;
Następnie w jakimś pliku *.cpp includuj stworzony plik *.h oraz dodaj zwykłą deklarację tej samej zmiennej: #include "plik.h"
ALLEGRO_BITMAP * img;
|
|
Jacob99 |
» 2014-06-19 16:14:25 To pokaż kod z plik_naglowkowy.hpp |
|
McAffey Temat założony przez niniejszego użytkownika |
» 2014-06-19 16:37:09 Zrobiłem extern ALLEGO_BITMAP * bitmapa; a w pliku main.cpp zaraz pod includowaniem tego pliku hpp ALLEGO_BITMAP * bitmapa; ale dalej to samo. Przy czym ten błąd "error: 'ALLEGO_BITMAP' does not name a type|" występuje gdy w pliku nagłówkowym mam oba includy : #include <allegro5/allegro.h> #include "allegro5/allegro_image.h" bo gdy zostawiam samo : #include "allegro5/allegro_image.h" to jest jeszcze gorzej : allegro_image.h|32|error: 'al_init_image_addon' has not been declared| allegro_image.h|32|error: expected identifier before '(' token| allegro_image.h|32|error: expected constructor, destructor, or type conversion before ';' token| allegro_image.h|33|error: 'al_shutdown_image_addon' has not been declared| allegro_image.h|33|error: expected identifier before '(' token| allegro_image.h|33|error: expected constructor, destructor, or type conversion before ';' token| allegro_image.h|34|error: expected constructor, destructor, or type conversion before '(' token| plik_naglowkowy.hpp|74|error: 'ALLEGO_BITMAP' does not name a type| @Jacob99 no tam jest tylko deklaracja klasy : #ifndef PLIK_NAGLOWKOWY_HPP #define PLIK_NAGLOWKOWY_HPP
#include <allegro5/allegro.h> #include "allegro5/allegro_image.h"
class klasa { extern ALLEGO_BITMAP * bitmapa; };
#endif |
|
McAffey Temat założony przez niniejszego użytkownika |
» 2014-06-21 13:56:35 Oczywiście chodziło tylko o jedną literkę, zrobiłem literówkę w "ALLEGO_BITMAP". Tak czy siak dzięki. Zamykam :) |
|
« 1 » |