[C++] OpenGL 3.X/4.X lernen (aber Richtig!)



  • Heyho liebe Leute,

    im Rahmen meiner Bachelor-Arbeit werde ich in ca einem halben Jahr mit OpenGL 3.X/4.X in Berührung kommen und wollte mich jetzt zuhause schon mal ausgiebig mit dem Thema Grafikprogrammierung beschäftigen.

    Im 3ten Semester hatte ich Bereits ein Fach Grafikprogrammierung, bin also mit den Basics in OpenGL 1.1 (und der Mathematik dahinter) grob vertraut.

    Allerdings ist das Programmieren seit OpenGL 3.2 ja komplett anders geworden.
    Und des weiteren möchte ich mit C++ arbeiten.

    Ich suche nun ein Tutorial mit Step-By-Step Code-Beispielen um aktuelle Versionen von OpenGL zu lernen (triangle 2d, inkl farbe, 3d, shading, animation, blaaa)

    Hier im Forum bin ich schon auf nützliche Beiträge gestoßen.
    http://www.c-plusplus.net/forum/306947-full
    http://www.c-plusplus.net/forum/285147

    Allerdings möchte ich mich gerne mit reinem OpenGL befassen, dh sachen wie freeglut oder glus was in den verlinkten tutorials meist verwendet wird möchte ich nicht verwenden.

    Des Weiteren möchte ich gerne in C++ Programmieren.
    Ich brauch Euch ja nicht erzählen, dass C++ Objekt orientiert ist, also möchte ich auch gerne Objekt orientiert arbeiten (sons kann ich ja auch gleich C nehmen ^^)

    Also lautet meine Frage:

    Gibt es ein Buch/Tut mit welchem man OpenGL(3.2+ - OHNE freeglut/glus oder dergleichen) mit C++ (Objekt orientiert !!) lernen kann?

    Gruß

    Jango



  • Es hat schon Gründe, warum die alle Glut oä. verwenden.
    Mit reinem OpenGL kann man keine Fenster erzeugen, nicht auf Tastatur zugreifen etc.Dafür brauchste entweder die native API oder externe Bibliotheken.
    Glut ist für dich schon am besten, weil es dir die wenigste Arbeit abnimmt.


  • Mod

    wenn ich mich recht entsinne, zeigen die nehe tutorials wie du fuer deine wunschplatform ohne glut auskommst. ich denke das ist opengl-versionsuebergreifend.



  • Geld für Bücher ausgeben ist erstmal unnötig, arbeite mal folgende 3 Tutorialreihen durch:

    http://ogldev.atspace.co.uk/
    http://www.opengl-tutorial.org/
    http://www.arcsynthesis.org/gltut/

    Zum Einstieg reicht auch nur jeweils eins der drei, jedoch fehlen ihnen gegenseitig öfters mal ein paar Informationen die man dann in den jeweils anderen finden könnte.

    Wenn du die Tuts durch hast werden dir google zu bestimmten Funktionsnamen oder OpenGL Features reichen (die senden dich meistens zu den offiziellen Reference Pages oder dem dazu nebenläufigen Wiki, welche das meiste ganz gut erklären).



  • Heyho,

    danke für die Antworten.
    Mit Nehe hatte ich schonmal angefangen, allerdings bin ich bei meinen Recherchen immer wieder darauf gestoßen, dass es leider veraltet sei.

    Bei meinen Recherchen bin ich allerdings auch immer wieder auf das "Red Book" gestoßen, was wohl eine sehr sehr gutes Lehrwerk sein soll.
    Und die 30€ haben mir jetzt auch nicht weh getan ^^.

    Des Weiteren kann ich mir das wohl abschminken OpenGL Objekt-Orientiert zu programmieren, es sei denn ich schreibe vorher selbst einen Wrapper, oder arbeite mich in die schlecht dokumentierten halb fertigen bereits vorhanden Wrapper ein.
    (Ich frag mich warum dann alle groß rum posaunen, dass sie OpenGL in c++ entwickeln.. das bisschen was die da anders machen als es in C wäre is ja nu wirklich nich der Rede wert ^^)

    Ich würde zwar sehr gerne OpenGL von ganz unten an lernen, aber da ihr mir da von abratet und die ganzen tuts auch auf freeglut oder der gleichen aufsetzten werd ich mich mal damit zufrieden geben damit zu arbeiten ^^.

    Muss ja nur in der Bachelor-Arbeit gut verkaufe können warum ich das getan habe.

    Naja wie dem auch sei.
    Ich hab mir jetzt das Redbook (8te auflage, OpenGL 4.3) als lernwerk besorgt und scheitere natürlich direkt am ersten Beispiel.
    Und wie sollte es auch anders sein, ich scheitere am Linker 😃

    Vllt könnt ihr mir da ja auch weiter helfen.

    Quelltext:

    #include <iostream>
    //using namespace std;
    
    #include "vgl.h"
    #include "LoadShaders.h"
    
    enum VAO_IDs { Triangles, NumVAOs };
    enum Buffer_IDs { ArrayBuffer, NumBuffers };
    enum Attrib_IDs { vPosition = 0 };
    
    GLuint VAOs[NumVAOs];
    GLuint Buffers[NumBuffers];
    
    const GLuint NumVertices = 6;
    
    void init(void) {
    	glGenVertexArrays(NumVAOs, VAOs);
    	glBindVertexArray(VAOs[Triangles]);
    
    	GLfloat vertices[NumVertices][2] = {
    		{ -0.90f, -0.90f },	// Triangle 1
    		{  0.85f, -0.90f },
    		{ -0.90f,  0.85f },
    		{  0.90f, -0.85f },	// Triangle 2
    		{  0.90f,  0.90f },
    		{ -0.85f,  0.90f }
    	};
    
    	glGenBuffers(NumBuffers, Buffers);
    	glBindBuffer(GL_ARRAY_BUFFER, Buffers[ArrayBuffer]);
    	glBufferData(GL_ARRAY_BUFFER, sizeof(vertices),
    				 vertices, GL_STATIC_DRAW);
    
    	ShaderInfo shaders[] = {
    		{ GL_VERTEX_SHADER, "triangles.vert" },
    		{ GL_FRAGMENT_SHADER, "triangles.frag" },
    		{ GL_NONE, NULL }
    	};
    
    	GLuint program = LoadShaders(shaders);
    	glUseProgram(program);
    
    	glVertexAttribPointer(vPosition, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));
    	glEnableVertexAttribArray(vPosition);
    }
    
    void display(void) {
    	glClear(GL_COLOR_BUFFER_BIT);
    
    	glBindVertexArray(VAOs[Triangles]);
    	glDrawArrays(GL_TRIANGLES, 0, NumVertices);
    
    	glFlush();
    }
    
    int main(int argc, char** argv) {
    
    	glutInit(&argc, argv);
    	glutInitDisplayMode(GLUT_RGBA);
    	glutInitWindowSize(512,512);
    	glutInitContextVersion(4,3);
    	glutInitContextProfile(GLUT_CORE_PROFILE);
    	glutCreateWindow(argv[0]);
    
    	if(glewInit()) {
    		std::cerr << "Unable to initialize GLEW... exiting" << std::endl;
    		exit(EXIT_FAILURE);
    	}
    
    	init();
    
    	glutDisplayFunc(display);
    	glutMainLoop();
    
    	return 0;
    }
    

    Fehlermeldung:

    1>------ Erstellen gestartet: Projekt: Redbook_ex1_window_and_triangles, Konfiguration: Debug Win32 ------
    1>  triangles.cpp
    1>libcmtd.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(dbgheap.obj) : error LNK2005: __calloc_dbg ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(invarg.obj) : error LNK2005: __invoke_watson ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(crt0dat.obj) : error LNK2005: __amsg_exit ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(crt0dat.obj) : error LNK2005: __cexit ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(crt0dat.obj) : error LNK2005: __exit ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(crt0dat.obj) : error LNK2005: __initterm_e ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(crt0dat.obj) : error LNK2005: _exit ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(fpinit.obj) : error LNK2005: __fltused ist bereits in a previous module definiert.
    1>libcmtd.lib(fpinit.obj) : error LNK2005: __ldused ist bereits in a previous module definiert.
    1>libcmtd.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(winapisupp.obj) : error LNK2005: ___crtSetUnhandledExceptionFilter ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(winapisupp.obj) : error LNK2005: ___crtTerminateProcess ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(winapisupp.obj) : error LNK2005: ___crtUnhandledException ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(crt0init.obj) : error LNK2005: ___xi_a ist bereits in MSVCRTD.lib(cinitexe.obj) definiert.
    1>libcmtd.lib(crt0init.obj) : error LNK2005: ___xi_z ist bereits in MSVCRTD.lib(cinitexe.obj) definiert.
    1>libcmtd.lib(crt0init.obj) : error LNK2005: ___xc_a ist bereits in MSVCRTD.lib(cinitexe.obj) definiert.
    1>libcmtd.lib(crt0init.obj) : error LNK2005: ___xc_z ist bereits in MSVCRTD.lib(cinitexe.obj) definiert.
    1>libcmtd.lib(wsetloca.obj) : error LNK2005: __configthreadlocale ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(mlock.obj) : error LNK2005: __lock ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(mlock.obj) : error LNK2005: __unlock ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(winxfltr.obj) : error LNK2005: __XcptFilter ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(errmode.obj) : error LNK2005: ___set_app_type ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>libcmtd.lib(dbgrptw.obj) : error LNK2005: __CrtDbgReportW ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>LINK : warning LNK4098: Standardbibliothek "MSVCRTD" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
    1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: Standardbibliothek "libcmtd.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
    

    Bisheriges vorgehen.

    Ich habe mir die header-files und die libs von der Homepage besorgt
    und über Rechtsklick->eigenschaften->Zusätzliche Include bzw Bib-Verzeichnisse ins projekt eingebunden.

    Ich habe die LoadShaders.cpp in mein Projekt rein kopiert und compeliere sie mit. (Eine vgl.cpp gibts nich Oo)

    Ich habe die /NODEFAULTLIB option ausprobiert
    und ich habe unter Rechtsklick->Eigenschaften->C/C++->Codegenerierung alle Laufzeitbibliotheken ausprobiert.

    Immer krieg ich eine (ähnliche) Fehlermeldung.

    Ich Benutze VisualStudio 2012 (32Bit) und habe ein 64Bit Windows 7 Betriebssystem. (Ich hoffe das es nich daran liegt Oo)

    Vllt kann mir ja einer Helfen 🙂

    Gruß

    Jango



  • Natürlich kann man mit OpenGL OO programmieren!
    Du wirst noch bald genug merken, dass Klassen ei.em viel Arbeit abnehmen.
    Und Glut und OpenGL machen verschiedene Dinge.
    Die Sachen, die Glut macht, kannste nicht mit OpenGl machen.
    Bei deinem Problem kan. ich dir leider nicht helfen. Google schon gefragt?



  • Ja google hab ich schon gefragt...

    dadurch kam ich auf

    "Ich habe die /NODEFAULTLIB option ausprobiert
    und ich habe unter Rechtsklick->Eigenschaften->C/C++->Codegenerierung alle Laufzeitbibliotheken ausprobiert. "

    aller anderen Lösungen waren für mich nicht großartig Anwendbar, da die sich auf Fehler im Code beziehen.
    Die sind für mich ja nicht großartig nachvollziehbar, is ja nich meiner 😃

    Und ich denke auch nicht, dass das Redbook fehlerhaften Code veröffentlicht ^^
    Dafür is der ruf zu gut

    Gruß

    Jango



  • Nimm einfach SFML fürs Fenster.
    Dann kannst immer noch arisches OpenGL programmieren.



  • 1>------ Erstellen gestartet: Projekt: Redbook_ex1_window_and_triangles, Konfiguration: Debug Win32 ------
    1>  triangles.cpp
    ...
    1>libcmtd.lib(dbgrptw.obj) : error LNK2005: __CrtDbgReportW ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.
    1>LINK : warning LNK4098: Standardbibliothek "MSVCRTD" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
    1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: Standardbibliothek "libcmtd.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
    

    Diese hübschen Fehler bekommt man, wenn man in MSVC ein Programm mit einer anderen Standard-Bibliothek linken will als welche die weiteren Bibliotheken nutzen. Dadurch entsteht natürlich ein Namenskonflikt, weil mehrere Funktionen den selben Namen, allerdings nicht die selbe Adresse, teilen. Das Anpassen der Codegenerierung hätte dieses Problem eigentlich lösen sollen...



  • Heyho,

    also wenn ich das Umstelle ändern sich die Fehlermeldungen schon nen bisl,
    aber ich behalte Linker-Fehler.

    (Da ich grad in der Uni bin diesmal Windows 8 (64bit) PC immernoch VS2012 (32bit))

    Multithreaded-Debug-DLL [/MDd]

    Fehler	1	error LNK2005: __CrtSetCheckCount ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(dbgheap.obj)	OpenGL_test
    Fehler	2	error LNK2005: __calloc_dbg ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(dbgheap.obj)	OpenGL_test
    Fehler	3	error LNK2005: __invoke_watson ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(invarg.obj)	OpenGL_test
    Fehler	4	error LNK2005: __amsg_exit ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0dat.obj)	OpenGL_test
    Fehler	5	error LNK2005: __cexit ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0dat.obj)	OpenGL_test
    Fehler	6	error LNK2005: __exit ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0dat.obj)	OpenGL_test
    Fehler	7	error LNK2005: __initterm_e ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0dat.obj)	OpenGL_test
    Fehler	8	error LNK2005: _exit ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0dat.obj)	OpenGL_test
    Fehler	9	error LNK2005: __fltused ist bereits in a previous module definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(fpinit.obj)	OpenGL_test
    Fehler	10	error LNK2005: __ldused ist bereits in a previous module definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(fpinit.obj)	OpenGL_test
    Fehler	11	error LNK2005: __crt_debugger_hook ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(dbghook.obj)	OpenGL_test
    Fehler	12	error LNK2005: ___crtSetUnhandledExceptionFilter ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(winapisupp.obj)	OpenGL_test
    Fehler	13	error LNK2005: ___crtTerminateProcess ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(winapisupp.obj)	OpenGL_test
    Fehler	14	error LNK2005: ___crtUnhandledException ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(winapisupp.obj)	OpenGL_test
    Fehler	15	error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(hooks.obj)	OpenGL_test
    Fehler	16	error LNK2005: ___xi_a ist bereits in MSVCRTD.lib(cinitexe.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0init.obj)	OpenGL_test
    Fehler	17	error LNK2005: ___xi_z ist bereits in MSVCRTD.lib(cinitexe.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0init.obj)	OpenGL_test
    Fehler	18	error LNK2005: ___xc_a ist bereits in MSVCRTD.lib(cinitexe.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0init.obj)	OpenGL_test
    Fehler	19	error LNK2005: ___xc_z ist bereits in MSVCRTD.lib(cinitexe.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0init.obj)	OpenGL_test
    Fehler	20	error LNK2005: __configthreadlocale ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(wsetloca.obj)	OpenGL_test
    Fehler	21	error LNK2005: __lock ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(mlock.obj)	OpenGL_test
    Fehler	22	error LNK2005: __unlock ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(mlock.obj)	OpenGL_test
    Fehler	23	error LNK2005: __XcptFilter ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(winxfltr.obj)	OpenGL_test
    Fehler	24	error LNK2005: ___set_app_type ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(errmode.obj)	OpenGL_test
    Fehler	25	error LNK2005: __CrtDbgReportW ist bereits in MSVCRTD.lib(MSVCR110D.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(dbgrptw.obj)	OpenGL_test
    Warnung	26	warning LNK4098: Standardbibliothek "MSVCRTD" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\LINK	OpenGL_test
    Warnung	27	warning LNK4098: Standardbibliothek "libcmtd.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\MSVCRTD.lib(cinitexe.obj)	OpenGL_test
    Fehler	28	error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.	c:\users\jango\documents\visual studio 2012\Projects\OpenGL_test\Debug\OpenGL_test.exe	1	1	OpenGL_test
    

    Multithreaded-DLL [/MD]

    Fehler	1	error LNK2005: __invoke_watson ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(invarg.obj)	OpenGL_test
    Fehler	2	error LNK2005: __amsg_exit ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0dat.obj)	OpenGL_test
    Fehler	3	error LNK2005: __cexit ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0dat.obj)	OpenGL_test
    Fehler	4	error LNK2005: __exit ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0dat.obj)	OpenGL_test
    Fehler	5	error LNK2005: __initterm_e ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0dat.obj)	OpenGL_test
    Fehler	6	error LNK2005: _exit ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0dat.obj)	OpenGL_test
    Fehler	7	error LNK2005: __fltused ist bereits in a previous module definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(fpinit.obj)	OpenGL_test
    Fehler	8	error LNK2005: __ldused ist bereits in a previous module definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(fpinit.obj)	OpenGL_test
    Fehler	9	error LNK2005: __crt_debugger_hook ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(dbghook.obj)	OpenGL_test
    Fehler	10	error LNK2005: ___crtSetUnhandledExceptionFilter ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(winapisupp.obj)	OpenGL_test
    Fehler	11	error LNK2005: ___crtTerminateProcess ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(winapisupp.obj)	OpenGL_test
    Fehler	12	error LNK2005: ___crtUnhandledException ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(winapisupp.obj)	OpenGL_test
    Fehler	13	error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(hooks.obj)	OpenGL_test
    Fehler	14	error LNK2005: ___xi_a ist bereits in MSVCRT.lib(cinitexe.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0init.obj)	OpenGL_test
    Fehler	15	error LNK2005: ___xi_z ist bereits in MSVCRT.lib(cinitexe.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0init.obj)	OpenGL_test
    Fehler	16	error LNK2005: ___xc_a ist bereits in MSVCRT.lib(cinitexe.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0init.obj)	OpenGL_test
    Fehler	17	error LNK2005: ___xc_z ist bereits in MSVCRT.lib(cinitexe.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(crt0init.obj)	OpenGL_test
    Fehler	18	error LNK2005: __configthreadlocale ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(wsetloca.obj)	OpenGL_test
    Fehler	19	error LNK2005: __lock ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(mlock.obj)	OpenGL_test
    Fehler	20	error LNK2005: __unlock ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(mlock.obj)	OpenGL_test
    Fehler	21	error LNK2005: __XcptFilter ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(winxfltr.obj)	OpenGL_test
    Fehler	22	error LNK2005: ___set_app_type ist bereits in MSVCRT.lib(MSVCR110.dll) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(errmode.obj)	OpenGL_test
    Warnung	23	warning LNK4098: Standardbibliothek "MSVCRT" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\LINK	OpenGL_test
    Warnung	24	warning LNK4098: Standardbibliothek "libcmtd.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\MSVCRT.lib(cinitexe.obj)	OpenGL_test
    Warnung	25	warning LNK4098: Standardbibliothek "msvcrtd.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\MSVCRT.lib(cinitexe.obj)	OpenGL_test
    Fehler	26	error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.	c:\users\jango\documents\visual studio 2012\Projects\OpenGL_test\Debug\OpenGL_test.exe	OpenGL_test
    

    Multithreaded-Debug [/MTd]

    Fehler	1	error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) ist bereits in LIBCMTD.lib(typinfo.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\msvcrtd.lib(ti_inst.obj)	OpenGL_test
    Fehler	2	error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) ist bereits in LIBCMTD.lib(typinfo.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\msvcrtd.lib(ti_inst.obj)	OpenGL_test
    Warnung	3	warning LNK4098: Standardbibliothek "msvcrtd.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\LIBCMTD.lib(crt0init.obj)	OpenGL_test
    Fehler	4	error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.	c:\users\jango\documents\visual studio 2012\Projects\OpenGL_test\Debug\OpenGL_test.exe	1	1	OpenGL_test
    

    Multithreaded [/MT]

    Fehler	1	error LNK2005: __heap_alloc ist bereits in LIBCMT.lib(malloc.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(dbgheap.obj)	OpenGL_test
    Fehler	2	error LNK2005: __msize ist bereits in LIBCMT.lib(msize.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(dbgheap.obj)	OpenGL_test
    Fehler	3	error LNK2005: __recalloc ist bereits in LIBCMT.lib(recalloc.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(dbgheap.obj)	OpenGL_test
    Fehler	4	error LNK2005: __isctype ist bereits in LIBCMT.lib(isctype.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(isctype.obj)	OpenGL_test
    Fehler	5	error LNK2005: __isctype_l ist bereits in LIBCMT.lib(isctype.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(isctype.obj)	OpenGL_test
    Fehler	6	error LNK2005: __crt_debugger_hook ist bereits in LIBCMT.lib(dbghook.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\libcmtd.lib(dbghook.obj)	OpenGL_test
    Fehler	7	error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) ist bereits in LIBCMT.lib(typinfo.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\msvcrtd.lib(ti_inst.obj)	OpenGL_test
    Fehler	8	error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) ist bereits in LIBCMT.lib(typinfo.obj) definiert.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\msvcrtd.lib(ti_inst.obj)	OpenGL_test
    Warnung	9	warning LNK4098: Standardbibliothek "LIBCMT" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\LINK	OpenGL_test
    Warnung	10	warning LNK4098: Standardbibliothek "libcmtd.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\LIBCMT.lib(crt0init.obj)	OpenGL_test
    Warnung	11	warning LNK4098: Standardbibliothek "msvcrtd.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.	c:\Users\Jango\documents\visual studio 2012\Projects\OpenGL_test\OpenGL_test\LIBCMT.lib(crt0init.obj)	OpenGL_test
    Fehler	12	error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.	c:\users\jango\documents\visual studio 2012\Projects\OpenGL_test\Debug\OpenGL_test.exe	1	1	OpenGL_test
    

    Und das wars an Auswahlmöglichkeiten

    Gruß

    Jango



  • Die Antwort bleibt die selbe:

    Youka schrieb:

    ...in MSVC ein Programm mit einer anderen Standard-Bibliothek linken will als welche die weiteren Bibliotheken nutzen.

    Vergleiche die Codegenerierung mit der deiner verlinkten Bibliotheken.



  • Ist doch nur eine Bachelor-Arbeit, da musst du doch, wie beim Diplom, nicht mal selbst denken, sondern nur bekanntes in guter Form zusammen klatschen.

    Ich habe bei zwei Arbeiten mit geholfen und es ist ein Witz für was man in Deutschland einen Titel bekommt.



  • Heyho,

    Wie komme ich dann an die Information welche codegenerierung meine verlinkten libs benutzen?

    Gruß aus



  • Heyho,

    ich hab das Problem jetzt soweit lösen können, indem ich nochmal neue Versionen von freeglut und glew ausm netz gezogen hab, und mit den Versionen in den Header-Files vom Redbook ersetzt habe.

    Jetzt bekomme ich zumindest keine Linker Errors mehr
    Eine Win32 Anwendung öffnet sich.

    Aber das Programm schmiert ab 😃

    Nunja wär ja auch zu schön gewesen ^^

    Naja what ever

    Danke für die Hilfe beim Linker-Fehler

    Gruß

    Jang0


Anmelden zum Antworten