Präprozessordefinition in DLL abfragen



  • Hallo,

    ich hab ein kleines Problem und zwar habe ich eine MFC DLL erstellt in der ich in den Projekteinstellungen eine Präprozessordefinition names "DISABLE_LOGGING" erzeuge.
    In meinen Sourcefiles schreibe ich immer
    #ifnDef DISABLE_LOGGING
    ...
    #endif
    So kann ich mit einer Anweisung das Logging ein und ausschalten.
    Das ganze klappt auch im DLL - Projekt ganz gut.
    Nun möchte ich aber diese Funktionalität auch in einem Projekt nutzen, das diese DLL verwendet.
    Ich gebe also in den Projekteinstellungen des neuen Projekts wieder DISABLE_LOGGING an, mit der Hoffnung dass das Logging deaktiviert ist. Dies ist aber nicht der Fall.
    Weiss jemand Rat wie ich erreiche dass die Präprozessordefinition aus der DLL nicht ihre Wirkung verliert.

    Danke...



  • Du musst das wieder in den Projekteinstellungen angeben. 🙂



  • Das mache ich ja eigentlich schon und zwar
    in den Projekteinstellung des neuen (dialogbasierten) Projekts.
    Aber irgendwie will er halt nicht so recht.



  • Nene, das musst du in den Einstellungen der Dll machen, schließlich muss die ja damit kompiliert werden. 🙂



  • Ja genau, das Problem ist nur dass ich dann in meinem neuen Projekt nicht mehr die Möglichkeit habe das Logging ein oder auszuschalten.
    Ich müsste also zwei DLL - Versionen machen, sprich eine mit der Präprozessordefinition und eine ohne.
    Da muss es doch noch elegantere Lösungen geben. Ich könnte das natürlich auch mit Mehtodenaufruf machen (z.B. enableLog(bool bEnable)) nur müsste ich dann einiges Umschreiben.
    Ich steh irgendwie aufm Schlauch



  • Warum kannst du das Dll-Projekt denn nicht als abhängiges Unterprojekt einbinden?
    Darfst du es nicht mehr verändern? Oder willst du nicht?

    Wenn du nicht willst, würde ich versuchen, zwei verschidene Dlls zu erstellen - achte da auch auf Debug und Release. 🙂



  • die präcompiler direktiven werden nur beim kompilieren berücksichtigt, wenn du die DLL nicht jedes mal mit deinem Programm neu kompilierst (wie es wohl sein wird, was macht eine DLL denn sonst fürn Sinn 🙂 ) kannst du die dafür nicht gebraucht..



  • Bisher ist das DLL Projekt auch als unabhängiges Unterprojekt mit drinne.
    Wie Tow B auch schon sagt, ich muss dann auch ständig die DLL selbst mit kompilieren.
    Die Situation ist nur die dass dem Nutzer der DLL nur die DLL + lib + header zur Verfügung gestellt werden soll.
    Dieser soll nun selbst entscheiden können ob er mitloggen will oder nicht. Dies geht halt mit der Präprozessor Directive in der DLL nicht.
    Zwei verschiedene DLL's sind halt nicht gerade eine sehr elegante Lösung.
    Hat jemand von euch ne andere Idee?


Anmelden zum Antworten