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

06.04.2012, 21:13

[SDL] LinkError 2001 "_main"

Hi leuts

Gleich mal ein Problem:
sobald ich die SDL.h einbinde (per #include) wird folgende Error nachricht angezeigt:

Quellcode

1
error LNK2001: Nicht aufgelöstes externes Symbol "_main".


ich Programmiere in Visual C++ (2008|2010) express, in Beiden dieselbe Fehlermeldungen

Quellcode finde ich hier unsinnig, denn sobald ich #include <SDL.h> angebe, erscheint die Fehlermeldung. :dash: :dash: :dash: :dash: :dash:

Im Internet habe ich schon seit Vorgestern nach Lösungen gesucht. :cursing:

verschiedene Lösungsvorschläge sind bereits gescheitert, wie Bibliotheken blockeiren, Laufzeitbibliotheken in der Codegenerierung umstellen, ...
präprozessorbefehle wie z.B.:

C-/C++-Quelltext

1
2
3
4
#ifdef _WIN32
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
#endif

funktionieren auch nicht(Die Bibliotheken habe ich schon in den _Eintellungen eingebunden).
und die SDL.dll befindet sich bereits im Projektordner.
Bei jedem Projekt, be dem ich versuche die SDL.h einzubinden bekome ich denselben Fehler.

SDL habe ich von Hier:
http://www.libsdl.org/download-1.2.php
"SDL-devel-1.2.15-VC.zip (Visual C++)"
Wer Rechtschreibfehler Findet Darf Sie Behalten.

Oberon

Treue Seele

Beiträge: 181

Wohnort: Österreich

Beruf: Student

  • Private Nachricht senden

2

06.04.2012, 21:15

Du brauchst eine main funktion mit folgendem Prototyp:

C-/C++-Quelltext

1
int main(int argc, char* argv[])

3

06.04.2012, 21:34

.

Das hab ich schon in den Projekten drinn, hab ich mir so eingeprägt, das erste was ich da reinschreibe.
Trotzdem danke :P
Selbst bei dem SDL-Spiel aus dem Buch (C++ für Spieleentwickler)

EDIT:
Hier das ganze log:

Quellcode

1
2
3
4
5
1>------ Erstellen gestartet: Projekt: SDL_Game, Konfiguration: Release Win32 ------
1>  main.cpp
1>LIBCMTD.lib(crt0.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "_main".
1>C:\Users\Baigox\documents\visual studio 2010\Projects\SDL_Game\Release\SDL_Game.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Achja, das ist ein Testprojekt, ich pack den Code für das Spiel später rein, wenn der Fehler gelöst sind.
deswegen nur die main.cpp.
Wer Rechtschreibfehler Findet Darf Sie Behalten.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Baigox« (06.04.2012, 21:57)


4

07.04.2012, 10:36

Antwortet da noch jemand, oder ist das Thema eingefroren?

Ich glaube es ist ein Problem mit der SDL, kann es sein, dass ich die falsch "installiert" hab?
Wer Rechtschreibfehler Findet Darf Sie Behalten.

5

07.04.2012, 11:08

Ich kenne mich zwar wenig damit aus, aber hast du die Anleitung im Buch bei den Projekteigenschaften, wie man die SDL einbindet, auch ganz genau befolgt? Zum Beispiel bei den Projekteigenschaften "Alle Konfigurationen" und so weiter eingestellt? sdl.lib und sdlmain.lib mit Leerzeichen in die Zusätzlichen Abhängigkeiten geschrieben?

Hatte da nämlich auch schön öfters Fehler, lag meistens dadran :D

6

07.04.2012, 12:10

- ich hab alles auf D:\SDL entpackt
- die Verzeichnisse von Lib/Include Hinzugefügt
- die Lib daten beim Projekt eingebuden
- Die SDL.dll in den Projektordner kopiert
- aber sobald ich "#include <SDL.h>" in den Code Schreibe, bekomme ich den Error


die Lösungen, wie oben angegeben helfen leider nicht.

wenn ich dass wie im Buch versuche mit #include "SDL.h" findet er die Daten nur, wenn ich die ganzeh *.h daten in den Projektordner kopiere und bekomme dann denselben Fehler. :dash: :dash: :dash:
Wer Rechtschreibfehler Findet Darf Sie Behalten.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

07.04.2012, 12:50

Poste doch mal deinen ganzen Code.
Dann können wir mehr tun als nur zu raten!

8

07.04.2012, 13:38

Bei kleinen Quellcodes wie z.B.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
///////
//int main
//
//Hello world
//

#include <iostream>
//#include <SDL.h>

int main ( int argc, char* argv[])
{
cout << "Hello World!" << endl;

}

Funktioniert es solange, bis ich das #iclude <SDL.h> Hinzufüge.
den Errorcode Hab ich ja schon gepostet.

nun zu meinem Projekt aus dem Buch

Der Errorcode sieht so aus:

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
1>------ Erstellen gestartet: Projekt: SDL_Game, Konfiguration: Release Win32 ------
1>  Asteroid.cpp
1>  Framework.cpp
1>  Game.cpp
1>  main.cpp
1>  Player.cpp
1>  Shot.cpp
1>  Spite.cpp
1>  Timer.cpp
1>Framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_Init".
1>Framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_SetVideoMode".
1>Framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_FillRect".
1>Framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_PumpEvents".
1>Framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_GetError".
1>Framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_MapRGB".
1>Framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_Flip".
1>Framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_GetKeyState".
1>Framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_Quit".
1>Game.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_PollEvent".
1>Game.obj
 : error LNK2001: Nicht aufgelöstes externes Symbol ""private: void 
__thiscall CGame::SpawnAsteroids(void)" 
(?SpawnAsteroids@CGame@@AAEXXZ)".
1>Spite.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_RWFromFile".
1>Spite.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_LoadBMP_RW".
1>Spite.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_UpperBlit".
1>Spite.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_SetColorKey".
1>Spite.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_FreeSurface".
1>Timer.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_GetTicks".
1>LIBCMTD.lib(crt0.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "_main".
1>C:\Users\Baigox\documents\visual
 studio 2010\Projects\SDL_Game\Release\SDL_Game.exe : fatal error 
LNK1120: 18 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Die dateien im Anhang.

Fals das wichtig ist, Meine Laptop-Daten:

Windows 7 Home Premium-64Bit (Professional 64Bit verstaubt bei mir im Regal, falls ich das Draufmachen sollte sagt bitte Bescheid)
6GB Arbeitsspeicher
1GB Nvidia GeForce GT540M
Intel Core i7
»Baigox« hat folgende Datei angehängt:
  • SDL_Game.rar (8,5 kB - 46 mal heruntergeladen - zuletzt: 26.04.2024, 05:41)
Wer Rechtschreibfehler Findet Darf Sie Behalten.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

07.04.2012, 13:45

Die Fehlermeldungen deuten darauf hin, dass die .LIB-Dateien der SDL nicht gelinkt werden.
Da du aber die Visual C++-Projektdatei nicht mit hochgeladen hast, kann ich das nicht überprüfen.

10

07.04.2012, 13:58

welche von denen ist das?
wenn das die *.sdf Datei ist, dann ist die zu groß zum hochladen
EDIT:
Dabei ist mir eingefallen, ich hab ja noch die Gute Dropbox:
Hier das Projekt: http://dl.dropbox.com/u/31215126/SDL_Game.rar
:love: Dropbox
»Baigox« hat folgende Datei angehängt:
  • SDL_Game.rar (3,85 kB - 52 mal heruntergeladen - zuletzt: 20.04.2024, 05:53)
Wer Rechtschreibfehler Findet Darf Sie Behalten.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Baigox« (07.04.2012, 14:08) aus folgendem Grund: Rechtschreibfehler/Linkfehler/Erweiterung(vermeidung von Doppelpost)


Werbeanzeige