Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

1

18.01.2015, 11:59

Makefile Compiler Fehler

Huhu,

ich wollte zu atom.io und Makefile wechseln für meine C++ Projekte.
Jetzt habe ich hier zwei Makefiles, eins für das Projekt, eins für die Engine. Allerdings habe ich Probleme Bibliotheken einzubinden. Ich habe mich dazu an der Ausgabe von eclipse orientiert, aber bekomme Fehler für "does not name a type".
Eigentlich habe ich den g++ noch nie von Hand bedient, daher brauche ich etwas Hilfe den Fehler zu finden.

Erstmal hier die beiden Makefiles (nicht wundern, ich versuche die später noch etwas zu automatisieren):

https://github.com/DeKugelschieber/Burni…ew/src/Makefile
https://github.com/DeKugelschieber/Burni…ngByte/Makefile

Dann die Ausgabe:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// ... g++ Compiler Aufrufe
g++ -std=c++11 -Wall -g3 -lglut -lalut -lopenal -lGL -Idl -lpthread -c ./main.cpp -o ../bin/main.o
In file included from ./BurningByte/bb.hpp:5:0,
                 from ./main.cpp:2:
./BurningByte/gl3w/gl3w.h:70:8: error: ‘PFNGLDRAWARRAYSPROC’ does not name a type
 extern PFNGLDRAWARRAYSPROC gl3wDrawArrays;
        ^
./BurningByte/gl3w/gl3w.h:71:8: error: ‘PFNGLDRAWELEMENTSPROC’ does not name a type
 extern PFNGLDRAWELEMENTSPROC gl3wDrawElements;
        ^
./BurningByte/gl3w/gl3w.h:72:8: error: ‘PFNGLGETPOINTERVPROC’ does not name a type
 extern PFNGLGETPOINTERVPROC gl3wGetPointerv;
        ^
./BurningByte/gl3w/gl3w.h:73:8: error: ‘PFNGLPOLYGONOFFSETPROC’ does not name a type
 extern PFNGLPOLYGONOFFSETPROC gl3wPolygonOffset;
        ^
./BurningByte/gl3w/gl3w.h:74:8: error: ‘PFNGLCOPYTEXIMAGE1DPROC’ does not name a type
 extern PFNGLCOPYTEXIMAGE1DPROC gl3wCopyTexImage1D;
        ^
./BurningByte/gl3w/gl3w.h:75:8: error: ‘PFNGLCOPYTEXIMAGE2DPROC’ does not name a type
 extern PFNGLCOPYTEXIMAGE2DPROC gl3wCopyTexImage2D;
        ^
./BurningByte/gl3w/gl3w.h:76:8: error: ‘PFNGLCOPYTEXSUBIMAGE1DPROC’ does not name a type
 extern PFNGLCOPYTEXSUBIMAGE1DPROC gl3wCopyTexSubImage1D;
        ^
./BurningByte/gl3w/gl3w.h:77:8: error: ‘PFNGLCOPYTEXSUBIMAGE2DPROC’ does not name a type
 extern PFNGLCOPYTEXSUBIMAGE2DPROC gl3wCopyTexSubImage2D;
        ^
./BurningByte/gl3w/gl3w.h:78:8: error: ‘PFNGLTEXSUBIMAGE1DPROC’ does not name a type
 extern PFNGLTEXSUBIMAGE1DPROC gl3wTexSubImage1D;
        ^
./BurningByte/gl3w/gl3w.h:79:8: error: ‘PFNGLTEXSUBIMAGE2DPROC’ does not name a type
 extern PFNGLTEXSUBIMAGE2DPROC gl3wTexSubImage2D;
        ^
./BurningByte/gl3w/gl3w.h:80:8: error: ‘PFNGLBINDTEXTUREPROC’ does not name a type
 extern PFNGLBINDTEXTUREPROC gl3wBindTexture;
        ^
./BurningByte/gl3w/gl3w.h:81:8: error: ‘PFNGLDELETETEXTURESPROC’ does not name a type
 extern PFNGLDELETETEXTURESPROC gl3wDeleteTextures;
        ^
./BurningByte/gl3w/gl3w.h:82:8: error: ‘PFNGLGENTEXTURESPROC’ does not name a type
 extern PFNGLGENTEXTURESPROC gl3wGenTextures;
        ^
./BurningByte/gl3w/gl3w.h:83:8: error: ‘PFNGLISTEXTUREPROC’ does not name a type
 extern PFNGLISTEXTUREPROC gl3wIsTexture;
        ^
make: *** [test] Fehler 1
marvin@marvin-desktop:~/Projekte/BurningByte/src$


Der Fehler bezieht sich auf die gl3w.h, mein OpenGL wrapper.

Die Ausgabe von eclipse zu der Datei sieht so aus:

Quellcode

1
2
3
4
5
Building file: ../src/BurningByte/gl3w/gl3w.c
Invoking: GCC C Compiler
gcc -std=c++11 -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/BurningByte/gl3w/gl3w.d" -MT"src/BurningByte/gl3w/gl3w.d" -o "src/BurningByte/gl3w/gl3w.o" "../src/BurningByte/gl3w/gl3w.c"
cc1: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C [enabled by default]
Finished building: ../src/BurningByte/gl3w/gl3w.c


Mit dem -MT"src/BurningByte/gl3w/gl3w.d" kann ich garnichts anfangen und ansonsten würde ich sagen müsste es bei mir eigentlich auch funktionieren...

Spielt die Reihenfolge eigentlich eine Rolle? Aktuell bastel ich aus jeder .cpp Datei eine .o Datei und linke die dann am Ende alle zusammen. Die .hpp werden ja auch automatisch einbezogen (oder?).

Dann noch etwas was eigentlich so auch nicht sein sollte. In der main.cpp steht ganz oben #include <GL/freeglut.h>. Wenn ich das weg lasse bekomme ich allerdings "/home/marvin/Projekte/BurningByte/src/./main.cpp:35: Nicht definierter Verweis auf `glut<IRGENDWAS>'
" und das auch noch mal für alle OpenAL Funktionen, obwohl diese gelinkt und eigentlich in bb.h eingebunden werden.

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

2

18.01.2015, 14:12

Okay ich habs bis zur ausführbaren Datei geschaft, dieses stürzt jedoch direkt ab:

Quellcode

1
2
marvin@marvin-desktop:~/Projekte/BurningByte/src$ '/home/marvin/Projekte/BurningByte/bin/bbtest' 
Speicherzugriffsfehler (Speicherabzug geschrieben)


Das sagt mir überhaupt nichts...

3

18.01.2015, 15:11

Benutz nen Debugger.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
Program received signal SIGSEGV, Segmentation fault.
0x0000000000408b62 in bb::Texture::getHeight (this=0x0) at ./gl/Texture.cpp:143
143     return size[1];
(gdb) bt
#0  0x0000000000408b62 in bb::Texture::getHeight (this=0x0) at ./gl/Texture.cpp:143
#1  0x000000000041906b in bb::Font::add (this=0xb2d0c0, letter=65 'A', x=0, y=5, offset=..., cutSpaces=true) at ./graphics/text/Font.cpp:26
#2  0x000000000043b088 in GameState::create (this=0xb2cf10) at ./GameState.cpp:24
#3  0x000000000040931a in bb::Game::add (this=0x667d80 <game>, state=std::shared_ptr (count 3, weak 0) 0xb2cf10) at ./core/Game.cpp:43
#4  0x000000000043fa29 in setup () at ./main.cpp:13
#5  0x000000000043fb9c in main (argc=1, args=0x7fffffffdf18) at ./main.cpp:60
(gdb) 


Schonmal an CMake gedacht?
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

18.01.2015, 15:16

Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

5

18.01.2015, 15:23

Naja es sollte nicht am Code liegen, der compiliert und läuft in eclipse wunderbar. Nur hier nicht...

[Edit]

Ach komm, bleibe ich halt bei eclipse. Aber wissen warum es nicht geht wäre trotzdem schön :P

[Edit 2]

Scheint doch irgendein anderer Fehler zu sein, ich hatte die header und alles umbenannt.
Ich glaube ich konzentriere mich lieber aufs Code schreiben und lasse das eclipse machen.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »DeKugelschieber« (18.01.2015, 15:39)


Werbeanzeige