Problem mit Klasse exportieren
-
Hallo zusammen,
hier ist die Header-Datei, in der die zu exportierende Klasse deklariert wird.
#ifdef DLL #define API __declspec(dllexport) #else #define API __declspec(dllimport) #endif #define WIN32_LEAN_AND_MEAN #include <windows.h> class API test { private: static int x; public: static inline void set() {x = 5;} };nur bekomnme ich immer folgende Fehlermeldung:
Dllmain.obj : error LNK2001: Nichtaufgeloestes externes Symbol "private: static int test::x" (?x@test@@0HA)
Debug/MasterEngine.dll : fatal error LNK1120: 1 unaufgeloeste externe Verweisewas ist zu tun?
-
Hi,
du hast die statische member Variable x nur deklariert, nicht definiert.#ifdef DLL #define API __declspec(dllexport) #else #define API __declspec(dllimport) #endif #define WIN32_LEAN_AND_MEAN #include <windows.h> class API test { private: static int x; public: static inline void set() {x = 5;} }; int test::x = 0;Gruss,
DeSoVoDaMu
-
Aber warum taucht der Fehler nur auf, wenn ich die Klasse exportiere?
-
Der Fehler taucht nicht nur auf, wenn du die Klasse exportierst, sondern sobald du in irgendeiner Weise auf die Variable zugreifst. Das wiederrum ist so, weil der Linker zu der Deklaration die besagte Definition nicht findet.
Gruss,
DeSoVoDaMu
-
eben nicht. Wenn ich das "API" nach "class" weglasse, gibt es keine Probleme. Außerdem habe ich schon Code gesehen, wo in der Header-Datei keine Definition steht. Ist ja auch irgendwie umständlich jede Variable im Header zu definieren.
-
dann steht sie aber in der cpp.
Und es wird nicht jede variable definiert, sondern nur statische.
-
alles klar jetzt gehts