Generelle Verständnisprobleme beim Verwenden von Libs



  • Hi, ich habe einige Probleme und schon Stunden gebastelt, aber finde einfach nicht meinen Fehler.

    Vorgeschichte:
    Habe mir eine kleine 2D-Engine mit OpenGL und GLUT gebastelt.
    Dafür verwende ich das Visual Studio 2003 und alles klappt wunderbar.
    Keine Warnungen, Fehlermeldungen etc. Die Engine läuft wie geschmiert.
    Nun wollte ich GLFW, ein anders OpenGL Toolkit, anstatt GLUT verwenden, da dieses
    aktueller und stabiler sein soll.

    Um das Toolkit verwenden zu können, musste ich per vorgegebenen Makefile
    dessen Quellcode erst compilieren und erhielt darauf 2 Libs und eine DLL.
    So wie ich das verstanden habe, ist eine Lib davon eine statische Lib, wodurch
    ich auf die DLL verzichten kann. Diese Lib namens glfw.lib habe ich dann in
    meinen Project-Properties angegeben. Die beiden nötigen libs für OpenGL
    binde ich standardmäßig dagegen folgendermaßen ein:

    #ifndef OPENGL32_LIB
    		#define OPENGL32_LIB
    		#pragma comment(lib, "opengl32.lib")
    	#endif
    
    	#ifndef GLU32_LIB
    		#define GLU32_LIB
    		#pragma comment(lib, "glu32.lib")
    	#endif
    

    So..ich habe nun alle 3 Libs, zwar auf unterschiedlichem Wege, eingebunden
    und meine Engine läuft sauberst. Allerdings bekomme ich folgende
    Warnmeldung immer beim compilieren:

    LINK : warning LNK4098: defaultlib 'LIBC' conflicts with use of other libs; use /NODEFAULTLIB:library

    Ok, solange alles läuft...soll mich diese Meldung nicht stören..(Was immer da auch im Konflikt ist).

    ABER nun kommt das mir sehr unverständliche:

    Folgendes Szenario läuft Prima, trotz Warnmeldung:

    - glfw.lib in den [b]Projekteigenschaften[/b] angeben
    - opengl32.lib per Pragma Comment angeben
    - glu32.lib per Pragma Comment angeben
    
    LINK : warning LNK4098: defaultlib 'LIBC' conflicts with use of other libs; use /NODEFAULTLIB:library
    

    Folgendes Szenario macht, allerding nur wenn ich es mit "start without debugging" ausführe, enorme Grafikffehler!! 😞 :

    - glfw.lib in den [b]Projekteigenschaften[/b] angeben
    - opengl32.lib in den [b]Projekteigenschaften[/b] angeben
    - glu32.lib in den [b]Projekteigenschaften[/b] angeben
    
    LINK : warning LNK4098: defaultlib 'LIBC' conflicts with use of other libs; use /NODEFAULTLIB:library
    

    Und folgendes Szenario macht ebenfalls enorme Grafikfehler, wenn ich es mit
    "start without debugging" ausführe:

    - glfw.lib per Pragma Comment angeben
    - opengl32.lib per Pragma Comment angeben
    - glu32.lib per Pragma Comment angeben
    
    [b]LIBCMT.lib(crt0init.obj)[/b] : warning LNK4098: defaultlib 'libc.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
    

    Scheinbar ist das einbinden über Pragma etwas anderes als das Einbinden
    über die Projekt-Eigenschaften ? Oder darf man per Pragma generell keine statischen Libs einbinden und DLL Libs ausschließlich mit Pragma ? Irgendwie habe ich da noch nicht wirlich den Durchblick, weil die Engine ja einwandfrei funktioniert, wenn ich die Libs in einer bestimmten Kombination von Pragma/Projekteigenschaften einbinden lasse.

    Weiss da jemand Rat ?


Anmelden zum Antworten