Grundverständnis: eigene Library erstellen (c++ / Visual Studio 2003)
-
Hallo,
ich bin mir etwas unsicher ob dies der richtige Ort ist, da ich nicht weiß ob ich hier falsche VisualStudio Einstellungen habe oder einfach grundsätzlich alles falsch mache.Ich versuche möglichst simple eine eigene Library zu erstellen. Das sieht momentan so aus:
'basic.h' class basic{ public: int test(); };
'basic.cpp' #include "basic.h" basic::test(){ return(10); }
Die test funktion möchte ich jetzt in einem anderen Projekt benutzen:
'test.cpp' #include "basic.h" int main(){ basic a; return(a.test()); }
Ich kriege aber auf diesem Wege nur LNK2001 / LNK 2019 errors von VS2003 ("unresolved external symbol "public: int__thiscall basic::test(void) (?test@basic@@$$FQAEHXZ)
Kann mir wer weiterhelfen?
-
Ja, du mußt erst die basic-Library in deinem Test-Porojekt linken. Unter Projekteinstellungen->C++->Linker->Eingabe kannst du den Namen der Libdatei eintragen.
-
Ok danke habe es gefunden und es funktioniert in diesem Beispiel.
Bei dem Versuch auf gleiche Art und Weise eine größere library (libpng) einzubinden kriege ich allerdings 432 warnings á la
libpng.lib(png.obj) : warning LNK4006: _png_iTXt already defined in libpng.lib(png.obj); second definition ignored
Ich verstehe nicht ganz warum er hier 2 definitionen findet?
-
versuch einfach mal mehere includes zu unterbinden:
'basic.h'
#ifndef _H_BASIC_H_ #define _H_BASIC_H_ class basic{ public: int test(); }; #endif
-
hab die #ifndef Anweisung in sämtliche Header-Dateien übernommen, dies hatte jedoch keine Auswirkung auf die Warning-Messages