Problem mit globalen Variablen beim erstellen einer DLL
-
Hallo,
ich habe ein C-Projekt Microsoft VS2010 erstellt, welches als Konsolenanwendung lauffähig ist. Nun möchte ich daraus gerne eine dll generieren. Dazu habe ich ein neues Projekt mit den Einstellungen für eine dll angelegt und meinen Code reinkopiert.
Der Code ist so aufgabeut, dass es eine Hauptquelldatei (.c) gibt und zwei Unterdateien mit Funktionen (.c). Dazu gibt es auch jeweils Headerdateien und eine zusätzliche globals.h, die globale Variablen enthält.
Wenn ich in meinem dll Projekt nun kompiliere bekomme ich eine Fehlermeldung vom Linker:*globale Variable* ist bereits in Hauptdatei.obj. definiert
Da ich mit dll's bisher kaum Erfahrung habe ist meine erste Frage:
- Kann ich in dll's überhaupt mit globalen Variablen arbeiten?
- Falls ja, weiß jemand was ich falsch mache?Das Grundgerüst der dll habe ich folgendermaßen programmiert
#if defined(_MSC_VER) #include <windows.h> #define DLL extern "C" __declspec(dllexport) #else #define DLL #endif #include "functions.h" //functions ist meine erste Unterdatei. //in functions.h wird widerrum meine zweite //Unterdatei models.h eingebunden und in dieser //werden meine globalen Variablen globals.h //eingebunden DLL int meineDLL(int uebergabewert) { ... }
-
google mal nach dll und globaler variable
oder
schau direkt in der msdn nach
Was eventuelle in deiner src falsch ist kann dir keiner sagen, die hast du ja nicht gepostet.
Schau mal in die FAQ
-
Dann hast Du eben diese globale Variable zweimal in Deinen Modulen. Die Regeln für EXE und DLLs sind da identisch wie bei Highlander: Es darf nur eine geben!
-
Anscheinend hast du eine Datei zweimal definiert aber ohne das du uns die globals.h zeigst wird dir hier wohl eher keiner helfen können.