c++ touchscreen ansteuern


@MojoMan
Ich bin zwar kein Progger, aber braucht man nicht die Open2X Firmware um die Files
zu benutzen die vom Open2x-toolchain kompiliert wurden?

Ansonsten versuch mal es mal mit Oopos Toolchain.
elektranox hat da so ne schöne seite dafür, mit anleitung und bunt.
http://dev.gp2x.de
 
Code:
5 ..\main.cpp SDL_thread.h: No such file or directory.

edit1: wenn ich aus "SDL_Thread.h" "SDL/SDL_Thread.h" mache bekomme ich folgenden Fehler
Code:
cannot find -lSDL_inifile

edit2: Habs nun die GP2XSDK mit devcpp nochmal neu geladen. Damit kann ich dein Projekt kompilieren. Aber wie arbeite ich nun mit dem, was in der Utilities.cpp ist? Also wenn ich in der mein nun die mouse auslesen möchte. Da ist ja die funktion getMouseMotionEvent.. aber wie verwende ich sie in der main? Bei meinen ganzen Versuchen wills einfach nicht klappen. oft bekomme ich auch den Fehler event sei nicht deklariert.. ist es aber in der utilities.cpp schon. Wenn ich das noch in der main mache, bekomme ich den Fehler, dass es doppelt deklariert wurde..

edit3: Habs raus. Funktioniert. DANKE! ;D
 
Hab mir von hier: http://sdl-stretch.sourceforge.net/ SDL_Stretch geladen.
Nun damit soll man Bilder Strecken und stauchen können.
Bekomme es aber irgendwie nicht hin. Weiss vll jemand, was ich daraus machen muss, damit es funktioniert?

px und py ist die Position
100 und 200 soll die Breite und Höhe sein..
image ist das Bild, dass gestreckt werden soll.
Code:
    SDL_Rect rcDest = {px,py, 0, 0};
    SDL_Rect srcDest = {0,0, 100, 200};
    //SDL_BlitSurface(image, &srcDest, screen, &rcDest);
    SDL_StretchSurfaceBlit(image, &srcDest, screen, &rcDest);
Es kommt folgender Fehler (auch wenn SDL_BlitSurface nicht auskommentiert ist)
[Linker error] undefined reference to `SDL_StretchSurfaceBlit(SDL_Surface*, SDL_Rect*, SDL_Surface*, SDL_Rect*)'
 
Also mit Bilder Stretchen hab ich mich noch nicht befasst.

Aber SDL_thread hab ich für Threads gebraucht, Also für dich warscheinlich unnötig

Ein Thread ist wie ein zweites Programm, das die gleichen Variablen verwenden kann.

mfg
Beltar
 
Hi,

ich habe in den vergangenen Tagen weiter versucht, das Beispielprogramm von Beltar zum laufen zu bringen.

Dabei bin ich auf den eigentlichen Kern des Problems gestoßen:

Das ganze läuft nur vernünftig, wenn man die Bibliotheken dynamisch bindet!

Das hatte ich auch schon unter Linux mit der Open2x- und der dev.gp2x.de-Toolchain (die ich nach dem Tipp von Pliskin zusätzlich installiert habe) herausgefunden. Dynamisch gebunden funktioniert es, statisch gebunden nicht.

Nun hatte ich die Hoffnung, dass es unter Windows eine aktuellere SDL-Lib gibt, die man auch statisch binden kann. Um das zu testen, hab ich einfach mal wieder das gute alte Windows gestartet und die Toolchain von GPH installiert (es gibt übrigens 'ne neue Version unter http://dev.gp2x.com/sdk/ -> gp2xsdk_windows_080429.zip).
Nachdem ich dann das Projekt von Beltar kompiliert hatte, fiel mir die kleine Dateigröße auf. In den Linker-Optionen sieht man dann, dass hier die Bibliotheken auch nur dynamisch gebunden werden. Kein Wunder also, dass das bei euch so gut funktionierte ...

Wenn man die Linkeroptionen so ändert, dass er statisch linkt, erhält man den von momosxp beschriebenen Fehler: "cannot find -lSDL_inifile ".
O.K., da kann man "-lSDL_inifile" in den Linkeroptionen einfach löschen ...
Bleibt der Fehler mit den "Threads": dazu muss man einfach am Ende der Linkeroptionen ein -lpthread anhängen.
Abgekürzt sehen meine Linkeroptionen also ungefähr so aus:

-static -l... -l... -lSDL -dynamic -... -... -lpthread

Damit konnte ich ein Programm erstellen, welches die SDL-Libs statisch gelinkt hat. Das ganze auf den F200 übertragen und ...
... das selbe Problem wie unter Linux: der Touchscreen reagiert nicht!
(Ach ja: ich hab das Projekt von Beltar natürlich wieder so abgeändert, dass der Mauszeiger überhaupt angezeigt und dort dargestellt wird, wo man den Touchscreen berührt.)

Also nochmal zusammengefasst:

das Projekt von Beltar funktioniert nur (zumindest bei mir), wenn man dynamisch linkt!


Nun habe ich spaßeshalber mal die Libs, die sich auf dem F200 im Ordner /lib befinden mithilfe von STerm auf meine SD-Karte kopiert und dann das ganze weiter in meinen /libs-Ordner der Open2x- bzw. dev.gp2x.de-Toolchain geschoben. Mit einem von beiden konnte ich dann auch statisch linken. Das Resultat lässt mich aber absolut rätselnd zurück:

das funktioniert auch nicht!??!

Woran das nun liegt, sei mal dahingestellt, für mich stellt sich jetzt also erneut die eigentliche Frage:

Wo finde ich eine Version der SDL-Lib, die den Touchscreen unterstützt und die ich statisch linken kann?!?

(Natürlich kann ich erstmal programmieren und alles dynamisch binden, das ganze endet nur dann, wenn ich 'ne Erweiterung der SDL benutzen möchte, die es nicht im /lib-Ordner des F200 gibt ...).

Irgendwo muss es diese Version der SDL geben, da die Leute, die das neue Touchscreen-Beispiel (http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,46,2533) programmiert haben, auch statisch linken ...
(Vielleicht ist es ja die neue Version der SDL-Lib von DJWillis auf Open2x - die hab ich aber nicht kompiliert gekriegt. :( )

Irgendwelche Tipps? (Vielleicht sollte ich diesbzgl. auch mal ein neues Thema starten ...)

Beste Grüße

MojoMan

Edit: Hey, ich glaube, dass ich endlich fündig geworden bin: http://paeryn.myby.co.uk/libSDL_21.tar.bz2 -> da steht was von Touchscreenunterstützung auf der Seite.
Werde das mal ausprobieren und dann berichten.

Edit2: Bingo! Habe Paeryns SDL-Version über die vorhandene Version rüberkopiert, anschließend das Programm kompiliert und statisch linken lassen. Da daaaa - nun funktioniert endlich auch der Touchscreen!!!
 
Und was ist daran nun eigentlich besser? War bei mir jetzt irgendwas falsch??
Bin mir momentan sowieso nicht schlüssig wenn es um die Entwicklungsumgebung geht.
Eigener Code.. funktioniert zwar, aber sobald ich mir irgendwo sourcecode runterlade und versuche zu kompilieren erhalte ich immer irgendwelche Fehler. Hab auch schon code runtergeladen wo dann die Project Datei für Visual C++ dabei war.

Wie ist das bei euch? Was benutzt ihr denn für eine Entwicklungsumgebung? Welche würdet ihr empfehlen?
Hatte bisher Dev-C++. Das ganze natürlich unter Windows.
 
momosxp said:
Und was ist daran nun eigentlich besser? War bei mir jetzt irgendwas falsch??
Hi,

"falsch" ist bei dir gar nichts!!!

Hat man eine Bibliothek dynamisch eingebunden, so bedeutet das nur, dass der entsprechende Code erst bei der Ausführung des Programms vom jeweiligen Rechner geladen wird (auf dem das Programm ausgeführt wird). Es setzt also voraus, dass du eine passende Bibliothek auf deinem Rechner hast. Sollte das nicht der Fall sein, funktioniert dein Programm evtl. nur unvollständig oder gar nicht. Solange du dein Programm also nicht an andere weiter gibst, sollte es überhaupt keine Problem geben.
(Da der F200 derzeit nur mit der Firmware 4.0 ausgeliefert wird, sollte eigentlich alles laufen, was man weiter gibt - unter http://dev.gp2x.com/release/ findet man jetzt allerdings schon 'ne Version 4.1 (mit Datum 01.05.2008). Ich hab die aber noch nicht installiert und kann demnach auch noch von keinen Erfahrungen berichten ...)

Bindest du eine Bibliothek hingegen statisch ein, so wird der entsprechende Programmcode fest in deine Datei eingebunden - damit wird dein Programm unabhängig von dem, was sich auf dem ausführenden Rechner befindet.
momosxp said:
Wie ist das bei euch? Was benutzt ihr denn für eine Entwicklungsumgebung? Welche würdet ihr empfehlen?
Hatte bisher Dev-C++. Das ganze natürlich unter Windows.
Bzgl. der Entwicklungsumgebungen kann ich nicht so richtig weiter helfen, da ich seit einiger Zeit hauptsächlich (aus ideologischen und praktischen Gründen) Ubuntu Linux benutze (startet einfach viel schneller und bietet alles, was ich auch unter Windoof benutzen würde). Habe aber damals gerne den Dev-Cpp unter Windows benutzt ...

Beste Grüße

MojoMan
 
gp2x-f200_4.1.0_080501.zip ist übrigens verbuggt.. Man kann damit keine Videos mehr schauen, weil sich die ganze zeit die Video Steuerung ein und ausblendet und man so das Video gar nich mehr erkennt. Lässt sich auch nicht ausschalten. Aber die Firmware ist aufjedenfall schneller.. Commander Keen.. läuft da aber nicht mehr.. usw.. naja ich tu wieder die alte drauf.

edit: komisch dass von diesem update nichts auf gp2x.com steht

edit2: hab nochma die alte 4er drauf geflasht. Und dann das update neu. Jetzt funzt es auch mit der neuen :p
 
Back
Top