Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

17.05.2013, 17:21

Problem mit Kapitel 12

Hey,
bin dabei das Kapitel 12 zu kompilieren, doch komme bei dieser Meldung nicht weiter.

C-/C++-Quelltext

1
2
3
4
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""private: void __thiscall CGame::RenderAsteroids(void)" (?RenderAsteroids@CGame@@AAEXXZ)" in Funktion ""public: void __thiscall CGame::Run(void)" (?Run@CGame@@QAEXXZ)".
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""private: void __thiscall CGame::CheckCollisions(void)" (?CheckCollisions@CGame@@AAEXXZ)" in Funktion ""public: void __thiscall CGame::Run(void)" (?Run@CGame@@QAEXXZ)".
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""private: void __thiscall CGame::SpawnAsteroids(void)" (?SpawnAsteroids@CGame@@AAEXXZ)" in Funktion ""public: void __thiscall CGame::Run(void)" (?Run@CGame@@QAEXXZ)".
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""private: void __thiscall CGame::ProcessEvents(void)" (?ProcessEvents@CGame@@AAEXXZ)" in Funktion ""public: void __thiscall CGame::Run(void)" (?Run@CGame@@QAEXXZ)".


Verwende VS 2010.

Hoffe ihr könnt mir helfen.
Grüße
Grimjim

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

17.05.2013, 17:33

Dir fehlen Implementierungen von den dort genannten Funktionen. Möglicherweise fehlt die cpp-Datei komplett, oder du machst irgendwas bei der Implementierung falsch. Wenn du es allein nicht rausfindest, poste doch bitte den Code von CGame.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

3

17.05.2013, 17:34

Er kann die Funktionen in CGame RenderAsteroids, CheckCollisions, SpawnAsteroids und Process Events nicht finden bzw. deren Definition, er hat nur die Deklaration.
Du hast sie noch nicht fertig implementiert und ein Auskommentieren der Funktionen in der Klasse würde helfen und keinen großen Schaden anrichten, da du sie eh noch nicht implementiert hättest.
Hast schlichtweg ihren Inhalt vergessen, das, was die Funktionen machen sollen. Hast bislang eben nur die Funktionen deklariert und versuchst sie aufzurufen. ;)

MfG
Check

EDIT: Schorsch, ich hab heute ein schlechtes Timing. Schon Nummer Zwei :D

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

17.05.2013, 18:03

Kann aber auch sowas sein:

C-/C++-Quelltext

1
2
3
4
5
class CGame
{
public:
void RenderAsteroids(void);
};

C-/C++-Quelltext

1
2
3
4
5
#include "CGame.h"
void RenderAsteroids(void) // eigenständige Funktion, unabhängig von CGame
{
// hier der Code
}


Anstatt sowas:

C-/C++-Quelltext

1
2
3
4
5
class CGame
{
public:
void RenderAsteroids(void);
};

C-/C++-Quelltext

1
2
3
4
5
#include "CGame.h"
void CGame::RenderAsteroids(void) // hier handelt es sich um eine Funktion von CGame
{
// hier der Code
}
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

xyqa

Frischling

Beiträge: 16

Beruf: Schüler

  • Private Nachricht senden

5

17.05.2013, 22:42

Hatte mal so ein ähnliches Problem. Probier mal alle Dateien zu entfernen und dann nochmal neu hinzuzufügen. Das gilt insbesondere für die Game.hpp und Game.cpp. Hat bei mir damals geholfen :)
Eine der wichtigsten Erfahrungen als Programmierer: Wenn alles auf Anhieb funktioniert hat man definitiv etwas falsch gemacht ;)

6

17.05.2013, 23:49

Vielen Dank, das wars hatte die 4 vergessen.
Nur jetzt fehlt bei starten die sdl.dll

Auch ein Dank an Schorsch


Er kann die Funktionen in CGame RenderAsteroids, CheckCollisions, SpawnAsteroids und Process Events nicht finden bzw. deren Definition, er hat nur die Deklaration.
Du hast sie noch nicht fertig implementiert und ein Auskommentieren der Funktionen in der Klasse würde helfen und keinen großen Schaden anrichten, da du sie eh noch nicht implementiert hättest.
Hast schlichtweg ihren Inhalt vergessen, das, was die Funktionen machen sollen. Hast bislang eben nur die Funktionen deklariert und versuchst sie aufzurufen.

MfG
Check

EDIT: Schorsch, ich hab heute ein schlechtes Timing. Schon Nummer Zwei
EDIT: Hat sich erledigt, musste sie einfach in dem selben Ordner, in der sich die EXE befindet ablegen.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Grimjim« (18.05.2013, 00:21)


xyqa

Frischling

Beiträge: 16

Beruf: Schüler

  • Private Nachricht senden

7

23.05.2013, 20:18

Zitat

Nur jetzt fehlt bei starten die sdl.dll
Die findet sich auf der DVD im Ordner (SDL-1.2.14\lib). Die musst du einfach in den Projektordner kopieren. :)
Gruß xyqa

EDIT: ups hatte deinen EDIT übersehen ;)
Eine der wichtigsten Erfahrungen als Programmierer: Wenn alles auf Anhieb funktioniert hat man definitiv etwas falsch gemacht ;)

Werbeanzeige