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.07.2008, 00:24

error LNK2001: Nichtaufgeloestes externes Symbol

So ich hab schon wieder ein Problem und ich hoffe ich störe euch nicht andauernd mit meinen Problemen;). Also ich habe folgenden Code:
MainMenu.hpp:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#ifndef MAINMENU_HPP 

#include "Framework.hpp"
#include "Sprite.hpp"
#include "Timer.hpp"
#include "Singleton.hpp"

#define g_pMain CMain::Get()

class CMain : public TSingleton<CMain>
{
public:

    void CreateMain ()
    {
        m_pSpriteMainBack = new CSprite;
        m_pSpriteMainBack->Load ("Data/MMBG.bmp");
        if(m_pSpriteMainBack == NULL)
        {
            cout << SDL_GetError () << endl;
        }
        m_pMainFont = new CSprite;
        m_pMainFont->Load ("Data/MMHL.bmp");
        if(m_pMainFont == NULL)
        {
            cout << "SDL_GetERROR ()" << endl;
        }
        m_pMainFont->SetPos (-4, 0);
        m_pMainFont->SetColorKey (255, 0, 255);
    };

    void RenderMain ()
    {
        g_pFramework->Update ();
        g_pFramework->Clear ();
        m_pSpriteMainBack->Render ();
        m_pMainFont->Render ();
        g_pFramework->Flip ();
    };


private:

    CSprite *m_pSpriteMainBack;   // Hintergrund Surface
    CSprite *m_pMainFont;         // Hintergrund Surface für Überschrift

};


#endif MAINMENU_HPP


und meine zweite Datein Main.cpp

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Main Datei
//

#include "MainMenu.hpp"


int main (int argc, char *argv[])
{
  // Framework initialisieren
  if (g_pFramework->Init (1024, 768, 16, true) == false)
   return (0);

  while (g_pFramework->KeyDown (SDLK_ESCAPE) == false)
  {
      g_pMain->CreateMain ();
      g_pMain->RenderMain ();
  };

  return 0;
}


nur wenn ich dieses Compiliere erhalte ich folgende Fehlermeldungen.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Temporäre Dateien und Ausgabedateien für "TicTacToe - Win32 Debug" werden gelöscht.
--------------------Konfiguration: TicTacToe - Win32 Debug--------------------
Kompilierung läuft...
main.cpp
MainMenu.cpp
Linker-Vorgang läuft...
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: bool __thiscall CFramework::KeyDown(int)" (?KeyDown@CFramework@@QAE_NH@Z)
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: bool __thiscall CFramework::Init(int,int,int,bool)" (?Init@CFramework@@QAE_NHHH_N@Z)
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CSprite::SetColorKey(int,int,int)" (?SetColorKey@CSprite@@QAEXHHH@Z)
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CSprite::SetPos(float,float)" (?SetPos@CSprite@@QAEXMM@Z)
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _SDL_GetError
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CSprite::Load(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?Load@CSprite@@QAEXV?$basic_string@DU?$char_traits@D@std@@V
?$allocator@D@2@@std@@@Z)
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall CSprite::CSprite(void)" (??0CSprite@@QAE@XZ)
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CFramework::Flip(void)" (?Flip@CFramework@@QAEXXZ)
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CSprite::Render(void)" (?Render@CSprite@@QAEXXZ)
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CFramework::Clear(void)" (?Clear@CFramework@@QAEXXZ)
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CFramework::Update(void)" (?Update@CFramework@@QAEXXZ)
LIBCD.lib(crt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _main
Debug/TicTacToe.exe : fatal error LNK1120: 12 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.


Und ich habe absolut keine Ahnung was das ist. Ich habe schon gegoogelt und in der MSDN geschaut aber da trifft nichts auf meinen Fehler zu.

2

17.07.2008, 00:49

Haste deinem projekt nicht Framework.cpp und Sprite.cpp hinzugefügt?!
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

3

17.07.2008, 11:55

Doch die beiden Datein habe ich auch. Ich habe die Framework cpp und hpp sowie die Sprite cpp und hpp von der CD genommen. Also genau so wie es bei dem SDL_Game gemacht wurde.

4

17.07.2008, 11:59

Ich glaube, der Compiler/Linker erwartet eine Konsolenanwendung und du verwendest ein Win32-Projekt?

5

17.07.2008, 16:31

Nein ich habe eine ganz normale Konsolenanwendung benutzt.

6

17.07.2008, 17:01

Habe mir die Fehlermeldungen nochmals näher angeschaut.

Quellcode

1
2
3
4
5
6
Temporäre Dateien und Ausgabedateien für "TicTacToe - Win32 Debug" --------------------
Konfiguration: TicTacToe - Win32 Debug--------------------

blabla

LIBCD.lib(crt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _main


Konsolenanwendung? Dann dürfte er eigentlich nicht über die fehlende Funktion main() stolpern.
Hatte das Problem hier schon zweimal gesehen. Und jedesmal war es die falsche Konfiguration Win32 statt Konsole und umgekehrt. Am besten, du setzt das Projekt noch mal neu auf.

7

17.07.2008, 22:01

ich habe das alles jetzt noch mal neu gemacht. und ich erhalte wieder die gleichen Fehler. Ich hab es auch mal in DEV C++ durchrattern lassen aber das brachte auch nichts.

8

17.07.2008, 22:30

Zitat von »"Deviloper"«

Haste deinem projekt nicht Framework.cpp und Sprite.cpp hinzugefügt?!

Das hast du ja schon bejaht, oder?
Also die CPPs über Projektmappe -> Hinzufügen -> Vorhandenes Element ?
Einfach in dein Projekt-Ordner kopieren reicht da z.B. nicht.

SirForce

Alter Hase

Beiträge: 802

Wohnort: Süddeutschland

  • Private Nachricht senden

9

17.07.2008, 23:07

Welchen Compiler verwendest du? Noch den alten VC++ 6.0 oder schon ein neueren?
Nichts behindert so sehr die Entwicklung der Intelligenz wie ihre vollständige Abwesenheit.

Michail Genin

10

17.07.2008, 23:53

Sollte egal sein. Es ist lediglich das Problem des Linkers, und das tritt nur auf, wenn die Cpp-Dateien nicht mitgelinkt werden, sondern nur die Header eingebunden werden!

Und dann halt noch der Fehler von wegen _main, dass ist wieder was anderes.
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige