Nicht auflösbares externes "Objekt"



  • Hallo an alle,

    ich suche gerade eine Fehlerursache, die ich jedoch leider nicht finden kann und hoffe, dass mit hier einer helfen kann.

    Ich nutze Embarcadero C++ Builder XE6.

    In meiner Main.cpp steht:

    #include "Main.h"
    

    In meiner Main.h steht:

    class TForm_Main : public TForm
    {
    __published:	// Von der IDE verwaltete Komponenten
                    [...]
    
    private:	// Anwender-Deklarationen
    
    public:		// Anwender-Deklarationen
    		__fastcall TForm_Main(TComponent* Owner);
    
    		static wchar_t* CharToWChar(const char* text);
    
                    [...]
    };
    //--------------------------------------------------------------------
    static wchar_t* CharToWChar(const char* text)
    {
       size_t size = strlen(text) + 1;
       wchar_t* wa = new wchar_t[size];
       mbstowcs(wa,text,size);
       return wa;
    }
    //---------------------------------------------------------------------------
    extern PACKAGE TForm_Main *Form_Main;
    //---------------------------------------------------------------------------
    #endif
    

    Meines Erachtens müsste die Funtion CharToWChar somit überall bekannt sein, wo Main.h eingebunden ist.

    In meiner Installationscenter.cpp steht auch

    #include "Main.h"
    

    und dennoch erhalte ich beim Kompilieren folgenden Fehler:
    Error: Nicht auflösbares externes 'TForm_Main::CharToWChar(const char *)' referenziert von D:[...]\DEBUG_BUILD\INSTALLATIONSCENTER.OBJ

    Kann mir bitte einer auf die Sprünge helfen, was ich gerade übersehe und wo der Fehler liegen könnte?

    Danke.



  • Du hast deine Klassenmethode CharToWChar nicht implementiert, denn die Funktion CharToWChar ausserhalb deiner Klasse in Main.h hat nix mit deiner Klasse TForm_Main zu tun.

    Du musst also die CharToWChar noch implementieren, das gehört ausserdem in Main.cpp:

    wchar_t* TForm_Main::CharToWChar(const char* text)
    {
    .....
    }
    

    😉


Anmelden zum Antworten