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

1

13.03.2011, 00:42

SDL-Verwendung nicht erfolgreich

Hallo Community,
ich habe jetzt seit Weihnachten 2010 das Buch "c++ für Spieleprogrammierer". Doch leider kann ich mich mit der Programmierung nicht richtig beschäftigen, da meine SDL nicht funktioniert. Hier eine kleine Problembeschreibung: Ich habe die SDL (SDL-devel-1.2.14-VC8.zip) heruntergeladen, die Include- und Bibliotheksverzeichnisse eingebunden, die SDL.lib und SDLmain.lib als externe Abhängigkeit eingetragen und die SDL.dll in das Projektverzeichnis kopiert. Ich benutze Visual Studio C++ Express 2010. Ich habe ein kleines Testprogramm geschrieben um die SDL zu testen. Hier der Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <SDL.h>

int main (int argc, char *argv[])
{
    int variable;
    variable = SDL_GetTicks();
    std::cout << variable;
    return 0;
}

Doch wenn ich das Programm debuggen will kommt folgende Fehlermeldung:

1>------ Erstellen gestartet: Projekt: Strichmännchen, Konfiguration: Debug Win32 ------
1> main.cpp
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_GetTicks" in Funktion "_SDL_main".
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_main" in Funktion "___tmainCRTStartup".
1>C:\Users\Christian\Documents\C++\Projekt Strichmännchen\Strichmännchen\Debug\Strichmännchen.exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

Meiner Meinung habe ich alles richtig gemacht, ich habe auch schon viele Problemberichte die mit der SDL zu tun hatten gelesen. Ich habe auch versucht andere Compiler wie QTCreator und andere DKs wie SFML zu benutzen, aber da ist mir alles zu schwierig. Wenn mir jemand helfen könnte und auch richtig ERKLÄRT was ich tun muss/soll/kann um das Problem zu beheben wäre ich sehr dankbar.
Gruß
Christian

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

13.03.2011, 00:54

Du hast die SDL nicht initialisiert.
http://wiki.delphigl.com/index.php/SDL_GetTicks

Zitat


Gibt die Anzahl der Milisekunden seit der Initalisierung von SDL zurück. Wenn das Programm mehr als 49,7 Tage läuft beginnt dieser Wert wieder von vorne.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

3

13.03.2011, 00:55

dann würde er trotzdem linken^^
da ist wohl was beim eintragen der abhängigkeiten schief gegangen. anscheinend hat er die main auch nicht kompiliert oO
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

13.03.2011, 01:04

Kann ja sein, aber er hat trotzdem vergessen, die SDL zu initialisieren.
Also würde er sich zweifelsohne wundern, warum das ganze nicht funktioniert, sobald es gelinkt ist.
Klugscheißer :D
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

5

13.03.2011, 01:12

@archi: hätte ichs net gesagt hätte er im nächsten post geschrieben, dass es nichts bringt und einen schlechten eindruck von dir ;)

@Chriss: vielleicht hast du das nur für die releaseversion eingetragen und die debug verwendet?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

6

13.03.2011, 13:20

Nein, ich habe alles für Release- und Debugversion eingestellt. Das mit dem Initialisieren muss ich auch nochmal einfügen.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

7

13.03.2011, 13:25

Liegt deine SDL denn eig. im Standard Include Ordner deines Compilers? Weil nur dann macht es Sinn

C-/C++-Quelltext

1
#include <SDL.h>
zu schreiben. Ansonsten wäre

C-/C++-Quelltext

1
#include "SDL.h"
angebrachter.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

8

13.03.2011, 13:38

Ich habe das gleiche Problem aber #inlcude "sdl.h" geht leider auch nicht

9

13.03.2011, 13:39

Ich habe jetzt folgenden Code mit der Releaseversion probiert:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <SDL.h>

int main (int argc, char *argv[])
{
    SDL_Init(SDL_INIT_EVERYTHING);
    int variable;
    variable = SDL_GetTicks();
    std::cout << variable;
    SDL_Quit();
    return 0;
}


Und dann kam folgende Fehlermeldung:

1>------ Erstellen gestartet: Projekt: Strichmännchen, Konfiguration: Release Win32 ------
1> main.cpp
1>LINK : fatal error LNK1181: Eingabedatei "SDL.lib SDLmain.lib" kann nicht geöffnet werden.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

10

13.03.2011, 13:43

@Architekt
Meine SDL liegt im Include-Ordner von meinem Compiler, daran liegt es nicht.

Werbeanzeige