LNK2019 Nicht aufgelöstes Symbol - weshalb?[gelöst]

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Durza
Beiträge: 21
Registriert: 13.08.2008, 20:31
Alter Benutzername: Durza
Wohnort: Schweiz

LNK2019 Nicht aufgelöstes Symbol - weshalb?[gelöst]

Beitrag von Durza »

Moin Community

Mir sind soeben einige kleine aber nervige Linker Errors untergekommen, doch ich weiss einfach nicht,
woran es liegen mag! :oops: Ich habe mir auch schon die Finger wund gegoogelt aber trotzdem nichts gefunden... :cry:
Ach ja, mein Compiler ist Visual C++ 2010 Express

Mein Programm sollte eig. nur ein Standbild meines Levels ausgeben. Ich benutze die Engine Genesis3D http://www.genesis3d.com
Es ist in 2 Dateien aufgeteilt:
  • Game.hpp (allg. Deklarationen)
    winmain.cpp (hauptfunktion (war ja klar))
    +Engine

Hier ein paar Codeschnipsel:

Code: Alles auswählen

Datei: Game.hpp

void TGame::CreateGame ()
{
	geRect   WorldScreen;   //Anzeigefläche
	char     WorldName[64]; //Name der Welt/Level
	geVFile  *WorldFile;    //BSP-Datei (Welt/Level)
	//3D Engine initialisieren
	Engine = geEngine_Create (GHandle, GVersion, ".");
	if (!Engine) ExitError("3D-Engine konnste nicht gestartet werden!");
	//Anzeigedaten für Engine abschalten
	geEngine_EnableFrameRateCounter(Engine, GE_FALSE) ;
	//Treiber auswählen
	SetDriver();
	//Anzeigefläche festlegen
	WorldScreen.Left= 0;
	WorldScreen.Right = MaxWidth -1;
	WorldScreen.Top = 0;
	WorldScreen.Bottom = MaxHeight -1;
	//Koordinaten-Matrix setzen
	geXForm3d_SetIdentity (&XForm);
	//Kamera initialisieren
	Camera = geCamera_Create (2.0, &WorldScreen);
	if (!Camera) ExitError ("Kamera konnte nicht installiert  werden! :'(");
	//Bsp Datei laden
	strcpy (WorldName, Pfad);
	strcat (WorldName, BSP_Datei);
	WorldFile = geVFile_OpenNewSystem(NULL, GE_VFILE_TYPE_DOS, WorldName, NULL, GE_VFILE_OPEN_READONLY);
	//Wenn Datei ok, Welt/Level erzeugen
	if (WorldFile)
	{
		World = geWorld_Create(WorldFile);
		geVFile_Close(WorldFile);

	};
	if (!World) ExitError("Welt/Level lässt sich nicht erzeugen!");
	//Welt/Level mit 3D Engine verknüpfen
	if (!geEngine_AddWorld(Engine, World)) ExitError ("Welt/Level lässt sich nicht einbinden!");
}
Nach diesem Teil ergeben sich die Fehler:
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_geEngine_AddWorld" in Funktion ""public: void __thiscall TGame::CreateGame(void)" (?CreateGame@TGame@@QAEXXZ)".
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "@geVFile_Close@4" in Funktion ""public: void __thiscall TGame::CreateGame(void)" (?CreateGame@TGame@@QAEXXZ)".
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_geWorld_Create" in Funktion ""public: void __thiscall TGame::CreateGame(void)" (?CreateGame@TGame@@QAEXXZ)".
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "@geVFile_OpenNewSystem@20" in Funktion ""public: void __thiscall TGame::CreateGame(void)" (?CreateGame@TGame@@QAEXXZ)".
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "@geCamera_Create@8" in Funktion ""public: void __thiscall TGame::CreateGame(void)" (?CreateGame@TGame@@QAEXXZ)".
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "@geXForm3d_SetIdentity@4" in Funktion ""public: void __thiscall TGame::CreateGame(void)" (?CreateGame@TGame@@QAEXXZ)".
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_geEngine_EnableFrameRateCounter" in Funktion ""public: void __thiscall TGame::CreateGame(void)" (?CreateGame@TGame@@QAEXXZ)".
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_geEngine_CreateWithVersion" in Funktion ""public: void __thiscall TGame::CreateGame(void)" (?CreateGame@TGame@@QAEXXZ)".

Code: Alles auswählen

Datei: Game.hpp
void TGame::RunGame ()
{
	//Koordinaten und winkel ausrichten
	geXForm3d_SetIdentity (&XForm);
	geXForm3d_RotateX (&XForm, 0.0);
	geXForm3d_RotateY (&XForm, 0.0);
	geXForm3d_RotateZ (&XForm, 0.0);
	geXForm3d_Translate(&XForm, 0.0, 0.0, 0.0);
	geCamera_SetWorldSpaceXForm (Camera, &XForm);
	//Rendering starten
	if(!geEngine_BeginFrame(Engine, Camera, GE_TRUE)) ExitError ("Beginn Frame gescheitert!");
	//Welt/Level rendern und darstellen
	if (!geEngine_RenderWorld (Engine, World, Camera, 0.0)) ExitError ("Rendering gescheitert");
	//Rendering beenden
	if (!geEngine_EndFrame (Engine)) ExitError ("End Frame gescheitert!");
}
Fehler:
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_geEngine_EndFrame" in Funktion ""public: void __thiscall TGame::RunGame(void)" (?RunGame@TGame@@QAEXXZ)".
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_geEngine_RenderWorld" in Funktion ""public: void __thiscall TGame::RunGame(void)" (?RunGame@TGame@@QAEXXZ)".
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_geEngine_BeginFrame" in Funktion ""public: void __thiscall TGame::RunGame(void)" (?RunGame@TGame@@QAEXXZ)".
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "@geCamera_SetWorldSpaceXForm@8" in Funktion ""public: void __thiscall TGame::RunGame(void)" (?RunGame@TGame@@QAEXXZ)".
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "@geXForm3d_Translate@16" in Funktion ""public: void __thiscall TGame::RunGame(void)" (?RunGame@TGame@@QAEXXZ)".
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "@geXForm3d_RotateZ@8" in Funktion ""public: void __thiscall TGame::RunGame(void)" (?RunGame@TGame@@QAEXXZ)".
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "@geXForm3d_RotateY@8" in Funktion ""public: void __thiscall TGame::RunGame(void)" (?RunGame@TGame@@QAEXXZ)".
1>winmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "@geXForm3d_RotateX@8" in Funktion ""public: void __thiscall TGame::RunGame(void)" (?RunGame@TGame@@QAEXXZ)".

So geht das da immer weiter... :cry:
Sagt mir Bescheid, wenn ich mehr Codes schreiben soll.

Hoffe auf schnelle Antworten und danke schonmal im voraus!

Durza
Zuletzt geändert von Durza am 23.07.2011, 15:08, insgesamt 1-mal geändert.
Ich kann mir eine Welt vorstellen ohne Krieg, eine Welt ohne Hass. Und ich kann mir vorstellen, wie wir diese Welt angreifen, weil die Typen es niemals erwarten würden.
kristof
Beiträge: 92
Registriert: 19.01.2009, 13:05

Re: LNK2019 Nicht aufgelöstes Symbol - weshalb?

Beitrag von kristof »

Die Linker-Fehler beziehen sich alle auf Funktionen die aus der Genesis3D Engine zu kommen scheinen. Das heisst, du hast vermutlich vergessen deinem Linker bekannt zu machen wo er die Bibliotheken von Genesis3D findet. Wie man das in Visual C++ macht weiss ich nicht, aber du wirst sicher ein Tutorial finden in dem das erklärt wird.
Durza
Beiträge: 21
Registriert: 13.08.2008, 20:31
Alter Benutzername: Durza
Wohnort: Schweiz

Re: LNK2019 Nicht aufgelöstes Symbol - weshalb?[wichtig]

Beitrag von Durza »

Vielen Dank für die Antwort!

Ich dachte zwar, dass ich das korrekt gemacht habe, aber habe soeben gemerkt, dass ich dass doch verbockt habe :oops:
Aber wie heisst es doch so schön: Nobody's Perfect! :D

Durza
Ich kann mir eine Welt vorstellen ohne Krieg, eine Welt ohne Hass. Und ich kann mir vorstellen, wie wir diese Welt angreifen, weil die Typen es niemals erwarten würden.
Durza
Beiträge: 21
Registriert: 13.08.2008, 20:31
Alter Benutzername: Durza
Wohnort: Schweiz

Re: LNK2019 Nicht aufgelöstes Symbol - weshalb?[wichtig]

Beitrag von Durza »

hmm.. jetzt spinnt mein Compiler aber völlig! Plötzlich kann er nich einmal mehr die anderen .lib Dateien öffnen:

1>LINK : fatal error LNK1104: Datei "kernel32.lib" kann nicht geöffnet werden.
was mach ich nur falsch??
Ich kann mir eine Welt vorstellen ohne Krieg, eine Welt ohne Hass. Und ich kann mir vorstellen, wie wir diese Welt angreifen, weil die Typen es niemals erwarten würden.
Benutzeravatar
Krishty
Establishment
Beiträge: 8267
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: LNK2019 Nicht aufgelöstes Symbol - weshalb?[wichtig]

Beitrag von Krishty »

Klingt fast so, als hättest du versehentlich Ignore All Default Libraries in den Linker-Einstellungen aktiviert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Durza
Beiträge: 21
Registriert: 13.08.2008, 20:31
Alter Benutzername: Durza
Wohnort: Schweiz

Re: LNK2019 Nicht aufgelöstes Symbol - weshalb?[wichtig]

Beitrag von Durza »

Nein, eigentlich nicht. Ich habe blos am Ende von zusätzliche Abhängigkeiten Genesis.lib angehängt...
Ich kann mir eine Welt vorstellen ohne Krieg, eine Welt ohne Hass. Und ich kann mir vorstellen, wie wir diese Welt angreifen, weil die Typen es niemals erwarten würden.
Durza
Beiträge: 21
Registriert: 13.08.2008, 20:31
Alter Benutzername: Durza
Wohnort: Schweiz

Re: LNK2019 Nicht aufgelöstes Symbol - weshalb?[wichtig]

Beitrag von Durza »

naja.. Also ich habs mit einer Reinstallation vom Windows SDK probiert aber hat nichts genützt... :(
Ich kann mir eine Welt vorstellen ohne Krieg, eine Welt ohne Hass. Und ich kann mir vorstellen, wie wir diese Welt angreifen, weil die Typen es niemals erwarten würden.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4880
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: LNK2019 Nicht aufgelöstes Symbol - weshalb?[wichtig]

Beitrag von Schrompf »

Es liegt ja offensichtlich an Deiner letzten Änderung. Also mach die rückgängig oder studiere, was genau Du da geändert hast. Am Ende hast Du z.B. aus Versehen die Standard-Lib-Pfade versteckt, weil Du das "$(LibraryPath)" in den Projekteinstellungen gelöscht hast, was üblicherweise am Ende Deiner eigenen Pfade steht.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Durza
Beiträge: 21
Registriert: 13.08.2008, 20:31
Alter Benutzername: Durza
Wohnort: Schweiz

Re: LNK2019 Nicht aufgelöstes Symbol - weshalb?[wichtig]

Beitrag von Durza »

Es tut mir leid, dass ich so lange nicht geanteortet habe, doch ich war in den Ferien und hatte dort (zu meinem
Bedauern) keinen Internetanschluss. Nun bin ich aber wieder zurück und los geht's.

Ich hab mir n' neues Projekt erstellt, die Dateien kopiert und die Bibliotheksdateien nochmal
sauber eingebunden und siehe da: Es funktioniert!

Ich hab wohl nur etwas beim Einbinden der Bibliotheksdateien verbockt :oops:

Aber: Danke für eure Hilfe!

Durza
Ich kann mir eine Welt vorstellen ohne Krieg, eine Welt ohne Hass. Und ich kann mir vorstellen, wie wir diese Welt angreifen, weil die Typen es niemals erwarten würden.
Antworten