SDL - Initialisierungsproblem
-
Hi,
Naja zugegeben das hat nichts mit intialisierung zu tun aber ein anderes Stichwort ist mir grad nicht eingefallen:
Ich benutz WinXP + VisualC++6 und habe folgendes Problem:
(Win32 Konsole und Win32 Aplication ausprobiert)
Ich habe in den Projekteinstellungen den Pfad der headerdateien von SDL angegeben, die dll in meinen Projektordner kopiert und die *.lib in mein Projekt eingebunden. Dazu noch eine leere *.cpp datei erstellt und mal testhalber f7 gedrückt da spuckt VC mir folgende Fehlermeldung aus:--------------------Konfiguration: SDLTEst - Win32 Debug-------------------- 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_win32_main.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _SDL_main Debug/SDLTEst.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise Fehler beim Ausführen von link.exe. SDLTEst.exe - 6 Fehler, 1 Warnung(en)Kann mir jemand sagen was ich falsch gemacht hab bzw vergessen/übersehen hab?
-
Moin, Moin...
In den Projekt-Eigenschaften musst Du unter
Compiler->Code generation->Runtime Library
den Eintrag Multi-threaded DLL(/MD) auswählen.
Hast Du auch die lib-Datei SDLmain.lib unter
Linker->Input->Additional Dependencies
eingetragen?
Ciao...
-
Kal El schrieb:
Moin, Moin...
In den Projekt-Eigenschaften musst Du unter
Compiler->Code generation->Runtime Library
den Eintrag Multi-threaded DLL(/MD) auswählen.
Hast Du auch die lib-Datei SDLmain.lib unter
Linker->Input->Additional Dependencies
eingetragen?
Ciao...
Unter Zustzlicher Bibliothekspfad hab ich das Include verzeichniss von SDL eingetragen wie es in den diversen Dokus steht.
MultiThreadet hatte ich vergessen damit konnt ich die Fehler zumindest reduzieren:MSVCRTD.lib(cinitexe.obj) : warning LNK4098: Standardbibliothek "msvcrt.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden SDLmain.lib(SDL_win32_main.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _SDL_main Debug/SDLTest.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise Fehler beim Ausführen von link.exe. SDLTest.exe - 2 Fehler, 1 Warnung(en)
-
Moin, Moin...
In Deinem Eingangsposting hattest Du geschrieben, dass Du eine leere cpp-Datei kompiliert hast. Das kann natürlich nicht klappen.
Nimm folgende:
#include <windows.h> #include <sdl.h> int main(int argc, char *argv[]) { return 0; }Dann sollte es funktionieren.
Ciao...
-
*hust* Manchmal zweifel ich echt an meiner Intelligenz
Ok von einem Problem zum nächsten:
Ich habe in den Projekteinstellungen den Pfad der includes angegeben. Jetzt müsste ich doch meines Wissens die entsprechenden Header Dateien einfach per
#include "SDL.h"
einbinden können. Wenn ich das so mache findet er sie jedoch nicht. Wenn ich die Headerfiles alle in den Projektordner kopier gehts
-
Moin, Moin...
Nun ja, es gibt einen kleinen, aber feinen Unterschied zwischen folgenden include-Anweisungen:
#include "sdl.h"bzw.
#include <sdl.h>Setzt Du den Namen der Datei in Anführungszeichen wird nur im aktuellen Verzeichnis nach der Header-Datei gesucht und nicht in den Include-Verzeichnissen.
Benutzt Du dagegen die spitzen Klammern, so sucht der Präprozessor in den angegebenen Include-Verzeichnissen.
Ciao...
-
hab ich beides probiert mit dem selben ergebniss, aber gut zu wissen wo der unterschied liegt
-
Vielleicht mit #include <SDL\SDL.h> ?

-
Nö aber wenn ich den vollständigen Pfad angebe gehts

bis auf die tatsache das er mich immernoch vor der msvcrt.lib warnt.
HmHmHm
-
Moin, Moin...
Taelan schrieb:
bis auf die tatsache das er mich immernoch vor der msvcrt.lib warnt.
Nochmal gefragt:
Hast Du in den Projekt-Einstellungen unter
Compiler->Code generation->Runtime Library
den Eintrag Multi-threaded DLL(/MD) auswählt?
Es gibt da nämlich noch den Eintrag Multi-threaded Debug DLL (/MDd), der genau die Warnung erzeugt, die Du noch erhälst. Schau noch mal nach...
Ciao...
-
In der Tat hatte ich Multithreaded DLL Debug gewählt, aber auch wenn ich Multitrheaded DLL nehm bekomm ich nur fehler.
Ich glaub ich gebs auf und nehm Eclipse + CDT + MinGW da funktionierts scheinbar. Bin wohl zu dumm für VC6.
bzw Code::Blocks