fatal error LNK1120: 2 unaufgelöste externe Verweise



  • Hallo.
    ich hoffe ich bin hier richtig.
    Also ich bin gerade dabei eine Log-Buch-klasse zu schreiben.
    (ich hab die von Marcus Bäckmann genommen und abgeändert)
    Aber es gibt ein Problem:
    hier erst mal der code:

    //log.h
    class UBIS_API uLog
    {
    public:
    	uLog();
    	void trace(const string& line);
    };
    #ifdef LOG_ENABLED
    #define ULOG(line) {uLog _ulog_;_ulog_.trace(line);};
    #define ULOG_FLUSH() {uLog _ulog_;};
    #else
    #define ULOG(line)     ;
    #define ULOG_FLUSH()   ;
    #endif
    
    //log.cpp
    #include "Ubis.h"//in dieser datei sind alle includes drinne die ich brauche
    
    uLog::uLog()
    {
    	fstream thefile("logfile.txt",ios::out | ios::trunc);
    }
    void uLog::trace(const std::string& line)
    {
    	fstream thefile("logfile.txt",ios::out | ios::app);
    	if(thefile.is_open())
    	{
    		thefile<<line<<endl;
    	}
    }
    

    so diese funktion/klasse steht dann in einer dll
    wenn ich nun in einem anderen projekt dies benutzen will spuckt mir der compiler(VC++.NET)
    fehler aus:

    #define UBIS_EXPORTS
    #define LOG_ENABLED
    #include <Ubis.h>
    
    int main()
    {
    	ULOG_FLUSH();
    	ULOG("test");
    	return 0;
    }
    

    Fehler:

    Bibliothek 'Debug/Ubistest.lib' und Objekt 'Debug/Ubistest.exp' wird erstellt
    m.obj : error LNK2019: Nicht aufgelöstes externes Symbol '"public: void __thiscall uLog::trace(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?trace@uLog@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)', verwiesen in Funktion '_main'
    m.obj : error LNK2019: Nicht aufgelöstes externes Symbol '"public: __thiscall uLog::uLog(void)" (??0uLog@@QAE@XZ)', verwiesen in Funktion '_main'
    Debug/Ubistest.exe : fatal error LNK1120: 2 unaufgelöste externe Verweise
    

    Woran kann das liegen?



  • du linkst halt die DLL nicht. 🙄

    Ansonsten solltest du dir deine Macros nochmal angucken und wie sie expandiert werden!



  • was meinst du mit linken?
    vorher ging es doch auch.
    und was ist an den macros falsch?
    vielen dank


Anmelden zum Antworten