Zugriff aug globle variablen
-
Moin
Ich habe ne MFC erweiterungs DLL geschrieben. Dort gibts ja diese Funktion DllMain. Direkt unterhalb hab ich eine Funktion geschrieben//DLL Klasse //DllMain(...) {...} extern PGconn* conn; PGconn* conn; extern "C" __declspec(dllexport) void SetDLLConn(PGconn* pConn) { conn = pConn; }Wie kann ich jetzt auf die conn Variable von einer anderen hinzugefügten Klasse zugreifen? Ich hab ja keine *.h

thx&cya
-
Es ist nicht verboten eine Header-Datei anzulegen.
Dort schreibst Du dann deinextern PGconn* conn;rein.
Oder hab ich da was übersehen ?
-
Hi!
Das geht leider nicht. Dann schreibt er irgenwas von ner doppelten deklaration
mfg
-
Bei mir funktioniert es problemlos:
Hier mal ein Beispiel:
Header klasse.h#if !defined KLASSE_HEADER #define KLASSE_HEADER // Hier PGconn definieren oder Header mit PGconn-Definition einbinden: // erstmal ganz simpel: typedef int PGconn; extern PGconn* conn; // Deine Klasse class Klasse{ PGconn* getGlobalVar(); }; #endif //KLASSE_HEADERCode klasse.cpp
#include "stdafx.h" #include "klasse.h" //Beispielfunktion PGconn* Klasse::getGlobalVar(){ return conn;; }Die automatisch erstellte dll.cpp:
#include "stdafx.h" #include <afxdllx.h> #include "klasse.h" //... // DllMain u.s.w. //... // Deine globale Variable: PGconn* conn; extern "C" __declspec(dllexport) void SetDLLConn(PGconn* pConn) { conn = pConn; }mfg
-
Hi!
Vielen Danke für deine Antwort!!!!
Leider bekomm ich nach wie vor folgenden Fehler, wenn ichCConn* pCon; pCon->getGlobalVar();in PartView.cpp schreibe
WordEx.obj : error LNK2005: "struct pg_conn * conn" (?conn@@3PAUpg_conn@@A) bereits in PartView.obj definiert
WordEx.obj : warning LNK4006: "struct pg_conn * conn" (?conn@@3PAUpg_conn@@A) bereits in PartView.obj definiert; zweite Definition wird ignoriert
Bibliothek Debug/WordEx.lib und Objekt Debug/WordEx.exp wird erstellt
PartView.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: struct pg_conn * __thiscall CConn::getGlobalVar(void)" (?getGlobalVar@CConn@@QAEPAUpg_conn@@XZ)Weißt du zufällig was ich da falsch mache?
Meine Conn.h#include "libpq-fe.h" PGconn* conn; extern PGconn* conn; class CConn{ public: PGconn* getGlobalVar(); };Meine Con.cpp
#include "stdafx.h" #include "Conn.h" PGconn* CConn::getGlobalVar(){ return conn; }Implementierung:
extern "C" __declspec(dllexport) void SetDLLConn(PGconn* pConn) { conn = pConn; }thx&mfg
-
Hi!
Es funktioniert jetzt. Danke für deine Hilfe
Bin kurzzeitig auf dem Schlauch gestanden ;=)cya