FighterFigger Geschrieben 13. April 2003 Geschrieben 13. April 2003 Hallo - ich komme mal wider nicht weiter. Ich habe ein Projekt (DLL), und darin habe ich einen Funktionspointer, dessen funktion erst später aus einer weiteren DLL extrahiert wird. Also habe ich mir gedacht, damit alle Klassen (mit jeweils eigener H und CPP) diese Funktion nutzen können, lege ich mir einen Static FunctionPointer an. typedef unsigned short (*FTWINRTE_STATE_TYP)(unsigned short); static FTWINRTE_STATE_TYP FTWINRTE_State; Den diesen Code beinhaltenden Header includiere ich überall, wo ich die Funktion benötige. In DllMain "lade" ich mit GetProcAddress die Funktion: HMODULE hRCUDLL = LoadLibrary("FTRCU32"); FTWINRTE_State = (FTWINRTE_STATE_TYP)GetProcAddress(hRCUDLL, "FTWINRTE_State"); Allerdings kann ich nur in dem Scope der CPP, in der ich "geladen" habe, diese Funktion auch nutzen. In allen anderen CPPs verweist der Funktionspointer weiterhin auf NULL. Frage: Ich dachte, static kümmert sich darum, daß ich diese Adresse überall nutzen kann - was habe ich nicht beachtet? Soll ich das Problem genauer beschreiben? Zitieren
nic_power Geschrieben 13. April 2003 Geschrieben 13. April 2003 Hallo, Das ist genau die Eigenschaft von "static", der Scope einer static-Deklaration ist local bzgl. der Datei in der sie verwendet wird (aus dem Grund ist der Pointer auch in allen anderen Deiner Objektdateien ein Null-Pointer, da Du pro Datei einen eigenen Pointer hast). Das Problem kannst Du umgehen, in dem Du den Pointer nicht als static deklarierst (in den anderen Dateien solltest Du dann ein "extern ..." verwenden). Nic Zitieren
FighterFigger Geschrieben 13. April 2003 Autor Geschrieben 13. April 2003 Danke sehr., das hat mir sehr viel weitergeholfen. Wieder so eine Lektion, die ich nie vergessen werde. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.