Hilfe bei SDL für Pandora

Programmieren in C++
Antworten
Autor
Nachricht
Benutzeravatar
SebbiUltimate
8 Bit
Beiträge: 363
Registriert: Do Jun 17, 2010 16:33

Hilfe bei SDL für Pandora

#1 Beitrag von SebbiUltimate » Sa Nov 27, 2010 15:47

Hallo Leute,
ich muss euch wieder mit einem Problem konfrontieren. :unsure:
Ich habe mir diesen Testsourcecode und das dort befindliche devkitpro heruntergeladen.
Ich benutze davon aber nur die Compiler im Ordner .../devkitARM/arm-eabi/bin. Betriebsyystem ist Win XP und das vorher genannte Verzeichnis ist in der %PATH% drin.
Ich hatte schon vorher Probleme beim kompilieren, die aber nur an fehlenden Headern usw. lagen. Doch nun gehts an den eingemachten Assembler-Krust.
Ich bekomme folgende Ausgabe, nachdem ich "arm-eabi-gcc -o sebbi.bin main.cpp -fno-short-enums" ausführe:

Code: Alles auswählen

f:/programme/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.5.1/../../../../arm-e
abi/bin/ld.exe: warning: C:\DOKUME~1\SEBAST~1\LOKALE~1\Temp\ccMywgv5.o uses 32-b
it enums yet the output is to use variable-size enums; use of enum values across
 objects may fail
C:\DOKUME~1\SEBAST~1\LOKALE~1\Temp\ccMywgv5.o: In function `main':
main.cpp:(.text+0x40): undefined reference to `Game::Game()'
main.cpp:(.text+0x4c): undefined reference to `Game::start()'
main.cpp:(.text+0x5c): undefined reference to `Game::~Game()'
main.cpp:(.text+0x7c): undefined reference to `Game::~Game()'
main.cpp:(.text+0x80): undefined reference to `__cxa_end_cleanup'
C:\DOKUME~1\SEBAST~1\LOKALE~1\Temp\ccMywgv5.o: In function `__static_initializat
ion_and_destruction_0(int, int)':
main.cpp:(.text+0xbc): undefined reference to `std::ios_base::Init::Init()'
main.cpp:(.text+0xe4): undefined reference to `std::ios_base::Init::~Init()'
C:\DOKUME~1\SEBAST~1\LOKALE~1\Temp\ccMywgv5.o:(.ARM.extab+0x0): undefined refere
nce to `__gxx_personality_v0'
C:\DOKUME~1\SEBAST~1\LOKALE~1\Temp\ccMywgv5.o:(.eh_frame+0x43): undefined refere
nce to `__gxx_personality_v0'
collect2: ld returned 1 exit status
Drücken Sie eine beliebige Taste . . .
PS: Und ja, ich weiß, dass jede Zeile oben mit ICH anfängt. :-D
RtlSetProcessIsCritical(TRUE, NULL, FALSE);
MsgBox(0,"","Du wirst es bereuen dieses Fenster zu schließen! :P");

Benutzeravatar
Schnatterplatsch
9 Bit
Beiträge: 845
Registriert: Di Mär 17, 2009 18:51

Re: Hilfe bei SDL für Pandora

#2 Beitrag von Schnatterplatsch » Sa Nov 27, 2010 20:02

Aus meinem beschränkten Wissen, was das compilieren über die Konsole angeht: Du erstellst eine Objectdatei aus main.cpp, in der die Klasse "Game" gebraucht wird. Du hast aber game.cpp (u. engine.cpp) garnicht compiliert bzw. zum dazulinken angegeben. Das ist es, was er mit "undefined reference" meint (SDL muss auch noch dazu gelinkt werden). Am besten nimmst du eine IDE (ich benutz Code::Blocks), die erledigt diesen ganzen Kleinkram für dich.

Benutzeravatar
SebbiUltimate
8 Bit
Beiträge: 363
Registriert: Do Jun 17, 2010 16:33

Re: Hilfe bei SDL für Pandora

#3 Beitrag von SebbiUltimate » Sa Nov 27, 2010 21:45

Oh, ok- ich dachte die Header sagen das dem Linker automatisch... Danke- Wenn ich mal ganz blöd fragen darf: Was muss ich da nach dem Import der Dateien und Compiler/Linker-Pfade noch einstellen- bei mir kommt "uses an invalid compiler- skipping... Nothing to be done."

Aber mal kurz OT (sorry aber das gehört zum Problem):
Da ich meine Pandora noch nicht habe ( :-( ), möchte ich es über qemu testen (sd image).
Screeny hat ja mal ein qemu image hochgeladen. Damit möchte ich gerne die SDL Demo testen; aber es sieht so aus, als ob diese damalige Version noch nicht das .pnd Format unterstützt, dh ich habe ewig lang nach einer Lösung gesucht und hab mit ImgBurn ein Image im UDF Format gemacht, weil ich kein passendes Tool für Fat gefunden habe. Jedenfalls hab ich dann versucht, mit "qemu-img convert -f raw pandora.img -O vvfat pan.img" das Format in vfat umzuwandeln, weil es sonst einen Kernel Panic gibt. Doch das bringt auch nichts (ich vermute qemu-img hat das gar nicht gemacht, da die Output Datei -O hieß) . Hat das jemand mal gemacht oder weiß, wie das geht?
RtlSetProcessIsCritical(TRUE, NULL, FALSE);
MsgBox(0,"","Du wirst es bereuen dieses Fenster zu schließen! :P");

Benutzeravatar
JohnDavidson
Forum Team
Forum Team
Beiträge: 1020
Registriert: Mi Aug 17, 2005 21:28
Wohnort: Mettmann
Kontaktdaten:

Re: Hilfe bei SDL für Pandora

#4 Beitrag von JohnDavidson » Sa Nov 27, 2010 22:31

Hey vllt hilft es ja. Ich hab vor einiger Zeit nen Thread zum kompilieren für die Pandora eröffnet. Ist ein paar Threads unter diesem ;)
http://forum.gp2x.de/viewtopic.php?f=8&t=10348

Und zum Thema testen. Du kannst auch uns Pandora-Besitzer fragen. Vllt findet sich ja ein Tester ;)
mfg. MasterLinux© Inside

MasterLinux.Blog
Openhandhelds.de

Benutzeravatar
SebbiUltimate
8 Bit
Beiträge: 363
Registriert: Do Jun 17, 2010 16:33

Re: Hilfe bei SDL für Pandora

#5 Beitrag von SebbiUltimate » Sa Nov 27, 2010 22:48

JohnDavidson hat geschrieben:Hey vllt hilft es ja. Ich hab vor einiger Zeit nen Thread zum kompilieren für die Pandora eröffnet. Ist ein paar Threads unter diesem ;)
http://forum.gp2x.de/viewtopic.php?f=8&t=10348

Und zum Thema testen. Du kannst auch uns Pandora-Besitzer fragen. Vllt findet sich ja ein Tester ;)
1. Ist zwar nett gemeint und eine tolle Mühe die du dir da gemacht hast, aber ich habe Windows XP auf dem Rechner. Leider kann ich das dann so nicht nutzen.
2. Sorry aber dann müsste ich ja bei _jedem_ neuen Schritt fragen obs funktioniert- eigtl müsste qemu ja funktionieren : Die Frage ist nur, wie man so ein hdd img hinkriegt wie Screeny das gemacht hat.
EDIT: zu 2.: Oder jemand weiß, wo man das aktuelle Pandora HDD img für qemu (boot über hdd-vfat, also nicht das sd-image von pandora-power.net) herkriegt/macht und kann mir einen Link geben?
RtlSetProcessIsCritical(TRUE, NULL, FALSE);
MsgBox(0,"","Du wirst es bereuen dieses Fenster zu schließen! :P");

Benutzeravatar
JohnDavidson
Forum Team
Forum Team
Beiträge: 1020
Registriert: Mi Aug 17, 2005 21:28
Wohnort: Mettmann
Kontaktdaten:

Re: Hilfe bei SDL für Pandora

#6 Beitrag von JohnDavidson » So Nov 28, 2010 19:31

Für den Sourcery G++ Compiler gibts doch auch ne Windows Version, sogar nen Installer ;) Die Syntax des Befehls sollte die gleiche sein.
mfg. MasterLinux© Inside

MasterLinux.Blog
Openhandhelds.de

Benutzeravatar
SebbiUltimate
8 Bit
Beiträge: 363
Registriert: Do Jun 17, 2010 16:33

Re: Hilfe bei SDL für Pandora

#7 Beitrag von SebbiUltimate » Mo Nov 29, 2010 16:56

Ich hab jetzt (umgeändert)

Code: Alles auswählen

arm-eabi-g++ -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -o sdlgameengine Window.cpp Image.cpp AnimatedImage.cpp Engine.cpp Controls.cpp main.cpp -Iinclude\SDL -Llib -Wl,--allow-shlib-undefined -lSDL -lSDL_image -lstdc++
eingegeben, stimmt das? Ich bekomme immer sdl.h nicht gefunden.. ich hab in der Path "F:\Programme\devkitPro\devkitARM\arm-eabi\" definiert, was muss ich noch machen bzw. stimmen die -I und -L Parameter?
EDIT: Hab das problem provesorisch umgangen indem ich die Ordner ins Verzeichnis kopiert habe (suche aber immer noch nach einer Lösung), dann hab ich noch -fno-short-enums gemacht, aber dann findet er -lSDL nicht. X-( Es ist zum verzweifeln.

Code: Alles auswählen

f:/programme/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.5.1/../../../../arm-e
abi/bin/ld.exe: cannot find -lSDL
collect2: ld returned 1 exit status
Drücken Sie eine beliebige Taste . . .
RtlSetProcessIsCritical(TRUE, NULL, FALSE);
MsgBox(0,"","Du wirst es bereuen dieses Fenster zu schließen! :P");

Benutzeravatar
JohnDavidson
Forum Team
Forum Team
Beiträge: 1020
Registriert: Mi Aug 17, 2005 21:28
Wohnort: Mettmann
Kontaktdaten:

Re: Hilfe bei SDL für Pandora

#8 Beitrag von JohnDavidson » Mi Dez 01, 2010 21:21

nimmst du denn auch die libs die extra für arm compiliert wurden? Mit den Windows Libs wirst du nicht weit kommen, es sei denn du kompilierst den SDL-Source ebenfalls mit nem Crosscompiler ;)
mfg. MasterLinux© Inside

MasterLinux.Blog
Openhandhelds.de

Benutzeravatar
SebbiUltimate
8 Bit
Beiträge: 363
Registriert: Do Jun 17, 2010 16:33

Re: Hilfe bei SDL für Pandora

#9 Beitrag von SebbiUltimate » Fr Dez 03, 2010 19:30

..Oh doch viel schwerer als ich dachte- werde es dann doch auf einem Linux PC machen (Hab grade ne Linux Anleitung gefunden siehe hier)
RtlSetProcessIsCritical(TRUE, NULL, FALSE);
MsgBox(0,"","Du wirst es bereuen dieses Fenster zu schließen! :P");

Antworten

Zurück zu „C++“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast