Header Datei einbinden



  • Hallo,

    ich möchte gerne von Form1 und Form2 auf eine selbst erstellte Header zugereifen.
    Die Header enthält die 4 Grundrechenarten.
    Wenn ich die Header in Form1.h bekannt mache läuft das alles super.
    Nun möchte ich aber auch die 4 Grundrechenarten aus der Form2.h benutzen.
    Aber sobald ich sie da bekannt mache, bekomme ich die Fehlermeldung.

    Fehler 1 error LNK2005: "public: static double __clrcall _rechnen::_multiplikation(double,double)" (?_multiplikation@_rechnen@@$$FSMNNN@Z) ist bereits in Form2.obj definiert. Test.obj

    Wie und Wo kann ich die Header einbinden, damit ich sie aus der Form1 und Form2 benutzen kann?

    Danke für die Hilfe, Malle



  • #pragma once
    

    vergessen?

    Gruss
    foo



  • Nein,steht überall davor...



  • Schreib den include mal in die stdafx.h - falls vorhanden, ansonsten kommt es darauf an ob wo diese Funktionen benötigt werden bzw. wo Deine Implementierungen sind (im Header oder im CPP-File)

    Gruss
    foo



  • Die "stdafx.h" ist vorhanden, aber gleich Fehlermeldung.
    Ich möchte die "rechenen.h" in Form1 und Form2 benutzen.
    Hab sie abwechselnd mal in der *.cpp und danach in der Form1.h bekannt gemacht, haut nicht hin, gleiche Fehlermeldung.
    Was nun?



  • Hallo Malle,

    ich habe exakt das gleiche Problem wie du!

    Hast du schon die Lösung zu Deinem Problem gefunden?
    Ich ärgere mich schon eine halbe Ewigkeit damit rum,
    und komme einfach nicht weiter.

    #pragma once
    

    hilft nix,
    und die altbewährte Methiode mit

    #ifndef _EINDEF
    #define _EINDEF
    
    //blabla
    
    #endif
    

    Hier die Beschreiung des Fehlers LNK2005:
    http://msdn.microsoft.com/de-de/library/72zdcz6f(VS.80).aspx

    Ich habe schon alle möglichen Varianten versucht,
    die #include "meineklasse.h" an irgendwelchen Stellen zu includen...
    Vergeblich...



  • Das sieht mir sehr danach aus, dass die Funkionen im Header
    definiert sind (und nicht in der cpp). Sie sollten hier aber nur
    deklariert werden.

    Also statt

    ref class rechnen {
        static double multiplikation(double a ,double b) {
            return a*b;
        }
        //...
    };
    

    im Header nur

    ref class rechnen {
    public:
        static double multiplikation(double a ,double b);
        //...
    };
    

    und in der cpp-Datei

    double rechnen::multiplikation(double a ,double b) {   // ohne static
        return a*b;
    }
    

    schreiben. (Alternativ kann man die Funktion als inline markieren,
    dann muss die Definition im Header stehen bleiben.)

    Alex



  • Hi,

    vielen Dank für die Antwort!

    Wollte es gerade schreiben, habs auch gerade herausgefunden :-).

    Gutes Gelingen!


Anmelden zum Antworten