globale Variablen und Funktionen



  • Hallo,

    ich bastle zur Zeit grad eine DLL, welche verschiedene Formulare enthält.
    es gibt eine dll-unit,
    dll.cpp

    //---------------------------------------------------------------------------
    #include <vcl.h>
    #include <windows.h>
    #include <shlobj.h>
    #include "globals.h"
    #include "Programm_ausfuehren.h"
    #include "Programm_beenden.h"
    #include "Ueberwachung_Objekt.h"
    #include "Ueberwachung_auf_Fenster.h"
    #include "Warte_auf_Fenster.h"
    #pragma hdrstop
    #pragma argsused
    int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
    {
            return 1;
    }
    //---------------------------------------------------------------------------
    __declspec(dllexport) void FormShow(TTreeNode* _Node,TComponent* Owner,TListView* _ListView)
    {
      viel code..
    }
    

    und die einzelnen Formular-Units.

    In der globals.h stehen jetzt verschiedene globale Variablen, und eine

    LRESULT CALLBACK MouseProc(int nCode,WPARAM wParam, LPARAM lParam)
    {...}
    

    wie muss ich denn nun dieses Variablen und Funktion deklarieren, damit ich sie in allen Formluar-Units verwenen kann?
    wenn ich die globals.h in jede FormularUnit einbinde, dann kommt so ne Compilermeldung wie "Variable doppelt definiert."
    Wenn ich die globals.h nur in die dll.cpp einbinde, dann müssten doch alle Units, die danach eingebunden sind, den Code sehen, der in dieser Unit steht, oder?
    Hab auch schon versucht, die Varailen in den einzelnen Formular-Units mit extern zu deklarieren, funzt aber anscheinend auch nicht.

    Weiss dazu jemand Rat?

    Danke, Sven



  • wenn du bei der globals.h das schreibts was bei jeder vom bcb erstellen unit-header steht kommt die Meldung nicht mehr:

    //globals.h
    #ifndef globalsH //globalsH kann auch ein anderer Name sein
    #define globalsH
    
    //Varibalen/Funktionendeklarationen
    
    #endif
    

    ps.: ist das überhaupt BCB spezifisch? 😉



  • hm, das steht schon drin:

    //---------------------------------------------------------------------------
    
    #ifndef globals
    #define globals
    //---------------------------------------------------------------------------
    HHOOK MouseHook;
    LRESULT CALLBACK MouseProc(int nCode,WPARAM wParam, LPARAM lParam);
    AnsiString ObjectClass,ObjectText,ObjectParentClass,ObjectParentText;
    HANDLE hWnd,hPWnd;
    
    LRESULT CALLBACK MouseProc(int nCode,WPARAM wParam, LPARAM lParam)
    {
    ...code...
    }
    
    #endif
    

Anmelden zum Antworten