[C++]Einstiegspunkt Fehler. OpenGL/SDL

CodeCrafterCpp

Erfahrenes Mitglied
Hallo,
Ich habe folgenden Code aus ein Tutorial und benutze OpenGl und SDL und bekomme einen Fehler das der Einstiegspunkt definiert sein muss. Aber ich habe ja die Funktion
Code:
int main()

C++:
#include <iostream>
#include <Windows.h>
#include <SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>



void init()
{
	glClearColor(0.0,0.0,0.0,1.0);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(45.0,640.0/480.0,1.0,500.0);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}

void display()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glBegin(GL_TRIANGLES);
		glVertex3f(0.0,2.0,-5.0);
		glVertex3f(-2.0,-2.0,-5.0);
		glVertex3f(2.0,-2.0,-5.0);
	glEnd();
}

int main()
{
	SDL_Init(SDL_INIT_EVERYTHING);
	SDL_Surface* screen=SDL_SetVideoMode(640,480,32,SDL_SWSURFACE|SDL_OPENGL);
	bool running=true;
	Uint32 start;
	SDL_Event event;
	init();
	while(running)
	{
		start=SDL_GetTicks();
		while(SDL_PollEvent(&event))
		{
			switch(event.type)
			{
				case SDL_QUIT:
					running=false;
					break;
			}
		}
		display();
		SDL_GL_SwapBuffers();
		if(1000/30>(SDL_GetTicks()-start))
			SDL_Delay(1000/30-(SDL_GetTicks()-start));
	}
	SDL_Quit();
	return 0;
}

Code:
Fehler	1	error LNK1561: Einstiegspunkt muss definiert werden.	C:\Users\*****\Documents\Visual Studio 2010\Projects\OPengll\OPengll\LINK
 
Zuletzt bearbeitet von einem Moderator:
Also muss ich das als Windows-Applikation das Projekt erstellen? Ich hab immer Konsole genommen...und ich hab den Code ja kopiert also sollte er ja auch Funktionieren.....
 
Musst du nicht, deswegen habe ich es als Frage formuliert. Wenn du es als Konsolenprogramm erstellt hast, sollte die main()-Funktion ausreichend sein.

Das widerspricht aber der Aussage des Linkers. Kannst du das komplette Projekt (den Ordner C:\Users\*****\Documents\Visual Studio 2010\Projects\OPengll) mal zippen und hier anhängen?
 
Also der Fehler kommt wenn ich oben noch:
Code:
#pragma comment(lib,"SDL")
#pragma comment(lib,"SDLmain")

Einfüge das habe ich bei Google gefunden das sollte dagegen helfen.
Wenn ich das entferne bekomme ich andere Fehler:
Code:
Fehler	17	error LNK1120: 16 nicht aufgelöste externe Verweise.	c:\users\jonas\documents\visual studio 2010\Projects\OpenGlTest\Debug\OpenGlTest.exe
Fehler	7	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glBegin@4" in Funktion ""void __cdecl display(void)" (?display@@YAXXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	8	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glClear@4" in Funktion ""void __cdecl display(void)" (?display@@YAXXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	4	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glClearColor@16" in Funktion ""void __cdecl init(void)" (?init@@YAXXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	5	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glEnd@0" in Funktion ""void __cdecl display(void)" (?display@@YAXXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	2	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glLoadIdentity@0" in Funktion ""void __cdecl init(void)" (?init@@YAXXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	3	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glMatrixMode@4" in Funktion ""void __cdecl init(void)" (?init@@YAXXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	6	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glVertex3f@12" in Funktion ""void __cdecl display(void)" (?display@@YAXXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	1	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_gluPerspective@32" in Funktion ""void __cdecl init(void)" (?init@@YAXXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	16	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_main" in Funktion "___tmainCRTStartup".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\MSVCRTD.lib(crtexe.obj)
Fehler	10	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_Delay" in Funktion ""int __cdecl SDL_main(void)" (?SDL_main@@YAHXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	13	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_GetTicks" in Funktion ""int __cdecl SDL_main(void)" (?SDL_main@@YAHXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	11	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_GL_SwapBuffers" in Funktion ""int __cdecl SDL_main(void)" (?SDL_main@@YAHXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	15	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_Init" in Funktion ""int __cdecl SDL_main(void)" (?SDL_main@@YAHXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	12	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_PollEvent" in Funktion ""int __cdecl SDL_main(void)" (?SDL_main@@YAHXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	9	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_Quit" in Funktion ""int __cdecl SDL_main(void)" (?SDL_main@@YAHXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	14	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_SetVideoMode" in Funktion ""int __cdecl SDL_main(void)" (?SDL_main@@YAHXZ)".	c:\Users\Jonas\documents\visual studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj

Sorry das ich das vergessen hatte oben im Code zu schreiben. Ich denke mal das du den Ordner nicht mehr brauchst oder?

mfG
 
Hi.

Mit SDL solltest du deine Haupteinsprungsroutine nicht main sondern SDL_main nennen.

So hast du jetzt 2 Einsprungspunkte und der Linker weiss nicht welchen er nehmen soll, da in sdlmain.lib auch eine main definiert ist.

Falls du SDL selbst initialisieren willst und eine eigene main brauchst, darfst du nicht gegen sdlmain linken.

Gruss
 
Also ich hab das wie von Wikipedia gemacht...Ich bekomme folgende Fehler:
Code:
Fehler	17	error LNK1120: 16 nicht aufgelöste externe Verweise.	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\Debug\OpenGlTest.exe
Fehler	7	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glBegin@4" in Funktion ""void __cdecl display(void)" (?display@@YAXXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	8	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glClear@4" in Funktion ""void __cdecl display(void)" (?display@@YAXXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	4	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glClearColor@16" in Funktion ""void __cdecl init(void)" (?init@@YAXXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	5	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glEnd@0" in Funktion ""void __cdecl display(void)" (?display@@YAXXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	2	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glLoadIdentity@0" in Funktion ""void __cdecl init(void)" (?init@@YAXXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	3	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glMatrixMode@4" in Funktion ""void __cdecl init(void)" (?init@@YAXXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	6	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glVertex3f@12" in Funktion ""void __cdecl display(void)" (?display@@YAXXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	1	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_gluPerspective@32" in Funktion ""void __cdecl init(void)" (?init@@YAXXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	16	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_main" in Funktion "___tmainCRTStartup".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\MSVCRTD.lib(crtexe.obj)
Fehler	10	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_Delay" in Funktion ""int __cdecl SDL_main(void)" (?SDL_main@@YAHXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	13	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_GetTicks" in Funktion ""int __cdecl SDL_main(void)" (?SDL_main@@YAHXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	11	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_GL_SwapBuffers" in Funktion ""int __cdecl SDL_main(void)" (?SDL_main@@YAHXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	15	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_Init" in Funktion ""int __cdecl SDL_main(void)" (?SDL_main@@YAHXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	12	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_PollEvent" in Funktion ""int __cdecl SDL_main(void)" (?SDL_main@@YAHXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	9	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_Quit" in Funktion ""int __cdecl SDL_main(void)" (?SDL_main@@YAHXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj
Fehler	14	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_SetVideoMode" in Funktion ""int __cdecl SDL_main(void)" (?SDL_main@@YAHXZ)".	C:\Users\Jonas\Documents\Visual Studio 2010\Projects\OpenGlTest\OpenGlTest\main.obj

Und nochmal den Ordner...ich wusste nicht wo die SDl.dll hin kommt hab die einfach überall rein gemach also nicht wundern :D


mfG
 

Anhänge

  • OPengll.rar
    14,3 MB · Aufrufe: 14
Nur mal so, ohne das ich das jetzt runtergeladen habe: kopier die DLL doch einfach mal ins Windows-Verzeichnis. Letztendlich muss die DLL entweder im

- Windows
- Windows\system32 (bei Win64 ist der Ordner allerdings windows\syswow64 - siehe auch http://de.wikipedia.org/wiki/WOW64)
- gleichen Ordner, wo die .exe liegt.

Wenn du eine 64-Bit-DLL hast und auf einem 64-Bit-System arbeitest, kopierst du die DLL trotzdem nach system32 (siehe http://de.wikipedia.org/wiki/WOW64).
 
Also ich hab das wie von Wikipedia gemacht...
Wie genau? Link?
Ich bekomme folgende Fehler:
...
Da scheinen jetzt sämtliche Libs zu fehlen.

Wo die DLL liegt ist erstmal völlig zweitrangig, du müßtest es ja überhaupt erstmal kompiliert + gelinkt kriegen.

Die 14 MB lad ich mir nicht runter. Zeig deinen Code und die Befehlszeilen aus den Projekteigenschaften oder das Buildprotokoll.

Gruß
 
Zurück