SDL-Problem
-
Hallo.
Ich habe vor ein kleineres Spiel mit Hilfe der SDL zu schreiben.
Naja, ich hbe mir die Lib runtergeladen und im VC6 die include Dateien und die .lib Dateien angegeben.
Abör ich bekomme immer noch Linkerfehler. Was mache ich da falsch?
-
1. Wie lautet der Linkerfehler?
2. Hast du dir die VC6-SDL-Libs/Dateien runtergeladen?
3. probier mal folgendes:#ifdef _WIN32 #undef main #endif
-
Also, hier mal die Linker-Fehler, und der Programmcode (ist eigentlich unwichtig).
Linker-Vorgang läuft... msvcrt.lib(MSVCRT.dll) : error LNK2005: _exit bereits in LIBCD.lib(crt0dat.obj) definiert msvcrt.lib(MSVCRT.dll) : error LNK2005: _strncpy bereits in LIBCD.lib(strncpy.obj) definiert msvcrt.lib(MSVCRT.dll) : error LNK2005: _fclose bereits in LIBCD.lib(fclose.obj) definiert msvcrt.lib(MSVCRT.dll) : error LNK2005: __isctype bereits in LIBCD.lib(isctype.obj) definiert LIBCD.lib(crt0init.obj) : warning LNK4098: Standardbibliothek "msvcrt.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden SDLmain.lib(SDL_main.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _SDL_main Debug/SDLDemo.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise Fehler beim Ausführen von link.exe.
#include <stdlib.h> #include <SDL.h> int main(int argc, char* argv[]) { return 0; }
Danke für den Tipp. werd's mal probieren.
PS: Ja ich habe die VC6 Version runtergeladen.
-
Nein. bringt nix.
Hat keiner nen Rat?
-
Du musst "Multithreaded DLL" einstellen:
Projekteinstellngen -> C/C++ -> Code-Generation -> Laufzeit-Bibliothek
-
#ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #endif #include <stdio.h> #include <stdlib.h> #include <SDL.h> #include <SDL_opengl.h> #ifdef _WIN32 #pragma comment(lib, "SDL.lib") #pragma comment(lib, "SDLmain.lib") #undef main #endif
Hau das mal rein.
-
@ HAR
Das ist doch nur eine Spielerei, die imho kein Mensch braucht um SDL zum Laufen zu kriegen. Wenn ich bei meinem SDL-Projekt was anderes als "Multithreaded DLL" einstelle, dann bekomme ich auch sofort Jovers Fehlermeldungen.
-
Danke, ich werds mal probieren.
aber ich glaube, dass ich sowas in der richtung schon eingestellt habe.
-
Juhuuu es geht!
Danke Tobi
-
Kein Ding. Habe diesen Fehler auch schon x-mal gemacht und fast den PC aus dem Fenster geworfen bis ich immer wieder festgestellt habe, dass es an dieser einen ******* Option liegt
-
Naja, da ich jetzt wieder was zum rumspielen hab, wird das wohl eine laaaaange Nacht.
-
Übertreibe es nicht. Programmieren kann einem auch zum Hals raushängen
-
Ja vielleicht.
Aber nicht wenn man grade was neues lernt. Da ist es sogar am besten.
-
Wenn man etwas neues lernt und wenn man etwas im Schlaf kann
-
Wenn man etwas schon im Schlaf kann, ist es langweilige Routine.
-
Ne, stellt dir vor du kannst SDL im Schlaf.
Dann kannst du innerhalb von kürzester Zeit die tollsten Sachen machen ohne dich immer zu fragen: "Wie geht denn das jetzt? Welchen Fkt. muss ich denn da nehmen?"
Du kannst deiner Fantasie fast ungebremst freien Lauf lassen; und das ist es doch was man als Programmierer will: Ideen verwirklichen. Oder?
-
Toller Doppelpost.
-
Ja stimmt.
Ich habe gestern so ein kleines PingPong Piel gecodet. (Im Schwarz-Weiß Stil)Ich bin aber noch nicht ganz zufrieden. Ich habe es so gemacht, dass bei jeder Bewegung der Balken zu 10 Pixel bewegt wird. Jetzt sieht das ganze aber ein bisschen ruckartig aus. Wenn ich ihn aber nur um einen Pixel bewege, dann geht er aber sehhhr langsam. Kann man das irgendwie in den Griff bekommen?
-
Ja, klar.
Du musst eine Zeitsteuerung basteln.
Im Klartext: In deiner move-Methode schaust du wieviel Zeit seit dem letzten Aufruf der Methode vergangen ist (kannst du in einer statischen Variable speichern und mit SDL_GetTicks()) aktualisieren) und dann festlegen, das sich die Balken z.B. 200 Pixel / Sekunde bewegen.Der Rest ist Dreisatz. Ist z.B. 0,1 Sekunde seit der letzen Balken-Bewegung (d.h. seit dem letzten Aufruf der move-Methode) vergangen, so bewegst du das Ding nicht um 200 sondern um 200 * 0,1 = 20 Pixel (wg. 0,1 Sekunden).
Das hat den Vorteil, dass das Spiel einerseits auf schnellen Rechnern nicht zu schnell ist und auf langsamen Rechnern sich das ganze nicht in Zeitlupe abspielt sondern "nur" Ruckelt.
-
Jover schrieb:
Ja stimmt.
Ich habe gestern so ein kleines PingPong Piel gecodet. (Im Schwarz-Weiß Stil)Ich bin aber noch nicht ganz zufrieden. Ich habe es so gemacht, dass bei jeder Bewegung der Balken zu 10 Pixel bewegt wird. Jetzt sieht das ganze aber ein bisschen ruckartig aus. Wenn ich ihn aber nur um einen Pixel bewege, dann geht er aber sehhhr langsam. Kann man das irgendwie in den Griff bekommen?
Vielleicht mit 5 Pixeln?