Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Linker Error

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.04.2011, 12:53 Uhr
banshee



Hi,

ich finde den Fehler einfach nicht:

error LNK2001: unresolved external symbol "public: static class GlobalSettings * __cdecl GlobalSettings::GetInstance(void)" (?GetInstance@GlobalSettings@@SAPAV1@XZ)

App.cpp


C++:
#include <windows.h>
#include "..\GlobalSettings\GlobalSettings.h"

int WINAPI WinMain(HINSTANCE    hInstance,
                   HINSTANCE    hPrevInstance,
                   LPSTR        lpCmdLine,
                   int            nCmdShow)
{
    GlobalSettings::GetInstance();//->SetTextureFilePath("..\\Data\\");
    
    return 0;    
}

int main(int argc, char* argv[])
{
    return WinMain(0,0,0,0);
}



GlobalSettings.h


C++:
#pragma once
#include "..\system\singleton.h"

class GlobalSettings
{
public:
    char *textureFilePath;

    GlobalSettings(void);
    ~GlobalSettings(void);

    void SetTextureFilePath(char *path);

    SINGLETON_FACTORY_H (GlobalSettings)
};



GlobalSettings.cpp


C++:
#include "./GlobalSettings.h"

SINGLETON_FACTORY_CPP (GlobalSettings)

GlobalSettings::GlobalSettings(void)
{
    textureFilePath = "";
}

GlobalSettings::~GlobalSettings(void)
{
}

void GlobalSettings::SetTextureFilePath(char *path)
{
    textureFilePath = path;
}


singleton.h


C++:
#if !defined(SINGLETON_FACTORY_H)
#define SINGLETON_FACTORY_H(a) static a* singleton; static a* GetInstance();
#endif

#if !defined(SINGLETON_FACTORY_CPP)
#define SINGLETON_FACTORY_CPP(a) a* a::singleton = 0; a* a::GetInstance() { if (!singleton) singleton = new a(); return singleton; }
#endif


Was läuft da falsch?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.04.2011, 13:20 Uhr
ao

(Operator)


Genau wissen tu ich es leider nicht. Paar Hinweise:

Zuerst fällt mir auf, dass der Linker offenbar die __cdecl-Konvention verwenden will, dass das in der Singleton.h aber nicht deklariert wird. Vielleicht einfach mal einfügen.

Wenn das nicht hilft: Schau dir den vom Preprocessor generierten Output an, dann siehst du, was aus den #define's tatsächlich gemacht wird.

Oder lass den Singleton-Header mal weg und deklarier und implementier den Singleton nativ in der Klasse.

Und noch ne Kleinigkeit:
#include "..\system\singleton.h" - Manche Compiler verstehen den einfachen Backslash hier richtig, aber eigentlich ist es falsch. Besser so:
#include "..\\system\\singleton.h" oder so:
#include "../system/singleton.h"

Dieser Post wurde am 01.04.2011 um 13:21 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.04.2011, 13:52 Uhr
Tommix



Hallo,
ich kann den Fehler nachstellen, wenn ich "vergesse" GlobalSettings.cpp dem Projekt hinzuzufügen, bzw. den Output zu linken. Liegt's vielleicht daran?
- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.04.2011, 18:40 Uhr
banshee



Genau, das Problem war, dass ich die Quelldateien zwar in der selben Solution aber in unterschiedlichen Projekten hatte. Allerdings habe ich auch schonmal gesehen, dass man das so auc kompilieren kann. Muss man da in den Projekteinstellungen noch was ändern?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: