globale variable in dll



  • Hallo,

    habe folgendes Problem: ich definiere in einer DLL ein Variable vom Typ Hinstance die innerhalb der Funktion init initialisiert wird:

    HINSTANCE m_LStep4;
    ...
    ...
    ...
    extern "C" __declspec(dllexport) void init()
    {
           m_LStep4=LoadLibrary("lstep4x.dll");
    }
    

    Ich möchte, dass m_LStep4 auch nach verlassen der DLL weiter zur Verfügung steht. Ich war der Meinung ich könne dies erreichen in dem ich Hinstance in der DLL als extern definiere ( damit der compiler weiss, dass das ding woanders definiert wird) und die eigentliche Definition im Hauptprogramm erledige. Aber der Compiler mag das nicht.
    Eine vorstellbare alternative wäre, die Variable in der DLL als global zu definieren, hab das mit static probiert. Jetzt meckert zwar der Compiler nicht mehr aber das Programm macht trotzdem nicht das was es soll. Aber eigentlich sollte doch der Inhalt von m_LStep4 erhalten bleiben und beim nächsten Einsprung in die DLL erhalten bleiben,oder?
    Wenn jemand Rat weiss wäre ich äußerst dankbar

    gruß
    kristian



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • hmm wie wäre sowas:

    HINSTANCE g_hDllLStep4 = NULL;
    
    __declspec(dllexport) bool init()
    {
        g_hDllLStep4 = LoadLibrary(TEXT("lstep4x.dll"));
        return (g_hDllLStep4 != NULL);
    }
    
    __declspec(dllexport) HINSTANCE get_step4_dll()
    {
        return g_hDllLStep4;
    }
    

    ?


Log in to reply