HEADer(banging)



  • Hilfe!!!

    Habe in BinFile.cpp die MTECH.h mit

    #include "MTECH.h" includiert.

    Nun habe ich eine DialogaNWENDUNG erzeugt und dort die BinFile.h includiert.
    Nun dachte ich dadurch das ich die MTECH.h in meine BinFile.cpp includiert habe und die BinFile.h in meinen Dialog intigriert habe ich zugang auf die Variablen in der MTECh.h habe.

    Dies ist leider nicht der Fall!!!

    Bekomme immer die Fehlermeldungen:

    C:\Programme\Microsoft Visual Studio\MyProjects\test2\test2Dlg.cpp(135) : error C2065: 'fd' : undeclared identifier
    C:\Programme\Microsoft Visual Studio\MyProjects\test2\test2Dlg.cpp(135) : error C2065: 'filename' : undeclared identifier
    C:\Programme\Microsoft Visual Studio\MyProjects\test2\test2Dlg.cpp(135) : error C2065: 'ALT' : undeclared identifier
    C:\Programme\Microsoft Visual Studio\MyProjects\test2\test2Dlg.cpp(135) : error C2065: 'FEHLERABBRUCH' : undeclared identifier

    wenn ich meinen Dialog compilieren will.

    Vielleicht hat ja einer von euch eine idee warum das nicht funzt.
    Vielleicht habe ich auch was falsch verstanden was HEADER Dateien angeht. Dachte immer das wenn ich eine Header includieren und diese andere Header in meinem Dialog includiere habe ich zugang auf all HEADERelemente die ich vorher auch includiert habe?

    Danke für eure Hilfe....

    C u



  • Kann es sein das Du die Header gegenseitig includest ?
    Wenn ja lies mal diesen Beitrag:

    fehler bei querverweis #include".." von header datei

    Wenn nein beschreib es bitte noch mal, ich konnte den Ausführung oben nicht ganz folgen.

    thx
    Michael



  • Glaube nicht das ich doppelt includiere da ich nur die MTECH.h in der BinFile.cpp includiert habe.
    Und die BinFile.H in mein Dialog!
    Müsste dann nicht eine Fehlermeldung kommen wie in etwa variable ist schonmal deklariert??
    Irgendwie versthe ich das nicht?
    Wenn ich in meinem Dialog nicht auf eine Variable zugreifen will die in der MTECH.h steht compiliert er ohne prob aber sobald ich auf eine Variable aus der MTECH.h zugreifen will kommen diese Fehlermeldungen.
    Dachte immer ich hätte das verstanden mit den Headerdateien....

    C u



  • hä?
    Du includierst die MTECH.h in der BinFile.cpp, includierst in deiner dialoganwendung aber die BinFile.h. Wieso sollte deine Klasse denn dann in deiner Dialogklasse bekannt sein?



  • UUhps!!!

    Dachte das wenn ich die BinFile.h oder allgemein eine Header Datei includiere das .cpp gegenstück direkt mit inkludiert wird?!

    Scheint wohl als hätte ich da was falsch verstanden?

    Irgendwie macht mich das Headern Kaputt.
    Gibts den dazu kein schönes einfaches Tutorial?

    Thx



  • So,

    habe mal ein bischen herumprobiert.

    Habe als erstes die MTECH.H in die BinFile.h includiert. Soweit sogut.
    Nun wenn ich die BinFile.h in meine test2Dlg.cpp includiere kommen folgende fehler:

    --------------------Configuration: test2 - Win32 Debug--------------------
    Compiling...
    test2Dlg.cpp
    Linking...
    test2Dlg.obj : error LNK2005: "float fa" (?fa@@3MA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "float fe" (?fe@@3MA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "char * Dut" (?Dut@@3PADA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "char * name" (?name@@3PADA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "char * filename" (?filename@@3PADA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "int npoints" (?npoints@@3HA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "char * poS" (?poS@@3PADA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "int fd" (?fd@@3HA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "int kmag" (?kmag@@3HA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "int kang" (?kang@@3HA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex16 * s11" (?s11@@3PAUcomplex16@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex16 * s12" (?s12@@3PAUcomplex16@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex16 * s21" (?s21@@3PAUcomplex16@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex16 * s22" (?s22@@3PAUcomplex16@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "float * fext" (?fext@@3PAMA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "float * w" (?w@@3PAMA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "float * g" (?g@@3PAMA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex8 * sext" (?sext@@3PAUcomplex8@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex8 * s1" (?s1@@3PAUcomplex8@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex8 * fx" (?fx@@3PAUcomplex8@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex8 * tx" (?tx@@3PAUcomplex8@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex8 * fx1" (?fx1@@3PAUcomplex8@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex8 * tx1" (?tx1@@3PAUcomplex8@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "int nwerte" (?nwerte@@3HA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex16 * s11n" (?s11n@@3PAUcomplex16@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex16 * s12n" (?s12n@@3PAUcomplex16@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex16 * s21n" (?s21n@@3PAUcomplex16@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex16 * s22n" (?s22n@@3PAUcomplex16@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex8 * s" (?s@@3PAUcomplex8@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex8 * sout" (?sout@@3PAUcomplex8@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex8 * win" (?win@@3PAUcomplex8@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex8 * tout" (?tout@@3PAUcomplex8@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct complex8 * tsel" (?tsel@@3PAUcomplex8@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "float * f" (?f@@3PAMA) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct caldata c" (?c@@3Ucaldata@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct data d" (?d@@3Udata@@A) already defined in BinFile.obj
    test2Dlg.obj : error LNK2005: "struct data_file * b" (?b@@3PAUdata_file@@A) already defined in BinFile.obj
    Debug/test2.exe : fatal error LNK1169: one or more multiply defined symbols found
    Error executing link.exe.

    test2.exe - 38 error(s), 0 warning(s)

    Irgendwie habe ich die vermutung das die BinFile.h doppelt includiert wird?
    Wenn ich mir die

    // test2.cpp : Legt das Klassenverhalten für die Anwendung fest.

    anschaue steht darin:

    #include "stdafx.h"
    #include "test2.h"
    #include "test2Dlg.h"

    und wenn ich mir die

    // test2Dlg.cpp : Implementierungsdatei

    anschaue steht darin:

    #include "stdafx.h"

    #include "test2.h"
    #include "test2Dlg.h"
    #include "binfile.h"

    Kann das sein das BinFile mit dieser konstellation doppelt includiert wird?
    Wenn ja kann ich dem Compiler sagen er soll die BinFile.h nur einmal includieren?

    Danke für eure Hilfe

    C u
    PS:Sorry falls ich nerven sollte, aber wer nicht fragt der lernt auch nichts (oder das falsche)

    thx



  • #ifndef __BINFILE_H_
    #define __BINFILE_H_
    
    // Inhalt Deiner binfile.h
    
    #endif // __BINFILE_H_
    


  • Und das selbe für deine MTECH.h
    ein include kopiert einfach den dateiinhalt der angegebenen datei an diese stelle.



  • Hi Leute,

    habe jetzt euren rat befolgt und die BinFile.h und MTECh.h wie oben besachrieben geändert, aber sobald ich die BinFile.h in mein test2Dlg.cpp includiere bekomme ich wieder die obige Fehlermeldung.
    Vieleicht hilft es ja wenn ich mal deb Sourcecode auf liste:

    test2dlg.cpp:

    // test2Dlg.cpp : Implementierungsdatei
    //
    #include "stdafx.h"

    #include "test2.h"
    #include "test2Dlg.h"
    #include "complex.h"
    #include "MTECH.h"
    #include "BinFile.h"

    #ifdef DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE
    _;
    #endif

    //MeinCode//
    -------------------------------------------------------------------------------
    BinFile.h:

    #ifndef __BINFILE_H_
    #define __BINFILE_H_

    #include "complex.h"
    #include "MTECH.h"

    //MeinCode//

    #endif // __BINFILE_H_
    -------------------------------------------------------------------------------
    BinFile.cpp:
    #include "stdafx.h"
    #include "BinFile.h"
    #include <sys\types.h>
    #include <sys\stat.h>
    #include <errno.h>
    #include <stdio.h>
    #include <Fcntl.h>
    #include <io.h>
    #include <stdlib.h>
    #include <string.h>
    #include <errno.h>
    #include <malloc.h>

    #ifdef DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE
    _;
    #define new DEBUG_NEW
    #endif

    //MeinCode//

    Hoffe ihr könnt mir Helfen?

    C u



  • HiLeute,

    habe immer noch dieses problem.

    Schiebe es mal nach oben in der hoffnung das mir doch jemand helfen kann.

    Danke

    C u



  • du bindest die mtech.h im grunde zweimal in die test2dlg!

    #include "MTECH.h" // direkter include
    #include "BinFile.h" //indirekter include, da mtech.h schon in binfile.h includiert wird.
    

    also lösch mal #include "MTECH.h" und zeig mal die mtech.h, falls es immer noch nciht funktioniert.



  • Hi,

    ich habe jetzt mal den direkten include der MTECH.h gelöscht.

    Jetzt kompiliert er zwar aber ich habe keinen zugriff auf die Variablen der MTECH.h
    Warum nicht?

    Hier mal die MTECH.H:

    #ifndef __MTECH_H_
    #define __MTECH_H_

    #include <math.h>
    #include "functions.h"

    // Definition von Flags für Laden und Speichern
    #define FEHLERABBRUCH 1
    #define FEHLERWEITER 0
    #define NEU 1
    #define ALT 0
    #define RANGETEST 0.0001

    #ifndef Pi
    #define Pi 3.1415926535
    #endif
    #ifndef PI
    #define PI 3.1415926535
    #endif

    #ifndef C0
    #define C0 299.7925
    #endif

    #ifndef V180
    #define V180 180.0
    #endif

    #ifndef V360
    #define V360 360.0
    #endif

    #define STRINGLEN 35
    #define POINTS 801
    #define MAXPOINTS 801

    #define NSAMPLEMAX 16384
    #define NSAMPLE 4096

    //VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
    #define CD_TO_CS(x) (cs_cmplx(((float)((x).r)),((float)((x).i))))

    #define FEHLERABBRUCH 1
    #define FEHLERWEITER 0
    #define ECLO 50
    //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    float fa, fe;

    char Dut[60]; /* ehem. Commen-Bereich 'name' */
    char name[8]; // Feld für name
    char filename[40]; // Feld für filename

    int npoints; // Anzahl der eingestellten Meßpunkte
    char poS[180]; /* Hilfsstring fuer Ausgabestrings */
    int fd, kmag, kang;

    complex16 s11[MAXPOINTS],s12[MAXPOINTS],s21[MAXPOINTS],s22[MAXPOINTS];

    typedef struct { // Datenfeld für Binfile PC
    char s[40];
    short np,fl,fa;
    float d[POINTS][9];
    } data_file;

    typedef struct
    {
    char coment[STRINGLEN]; /* Kommentar fuer Datensatz /
    int flag_lin, /
    Flag, ob lin oder log Daten /
    flag_ang, /
    Flag, ob 0/360 oder -180/180 Grad /
    f_points; /
    Anzahl der Frequenzpunkte /
    float frequency[POINTS], /
    Werte Frequenzen /
    mag[4][POINTS], /
    Werte Magnitude S11 S12 S21 S22 /
    ang[4][POINTS]; /
    Werte Angle S11 S12 S21 S22 */
    } data;

    typedef struct
    {
    short f_points; /* Anzahl der Punkte /
    double fa ,fe; /
    Werte Frequenzen /
    complex8 A11[POINTS], /
    Werte complex */
    B11[POINTS],
    Sa22[POINTS],
    Sb22[POINTS],
    S11ol2[POINTS],
    S11ol3[POINTS],
    S22ol2[POINTS],
    S22ol3[POINTS],
    S21l1[POINTS];
    } caldata;

    // fft
    #define FFT_NMAX 16384 /* maxanzahl stuetzstellen bei fft /
    #define LIGHT 300.0 /
    Lichtgeschwindigkeit */

    float fext[MAXPOINTS], w[2000], *g;
    complex8 sext[MAXPOINTS], s1[MAXPOINTS];
    complex8 *fx, *tx, *fx1, *tx1;

    int nwerte;

    complex16 s11n[MAXPOINTS],s12n[MAXPOINTS],s21n[MAXPOINTS],s22n[MAXPOINTS];
    complex8 s[MAXPOINTS], sout[MAXPOINTS], win[MAXPOINTS];
    complex8 tout[NSAMPLE],tsel[NSAMPLE];
    float f[MAXPOINTS];
    caldata c;
    data d;
    data_file *b;
    #endif // __MTECH_H_

    Danke

    C u



  • Sorry hatte was vergessen...

    Habe also den direkten inklude MTECH.H gelöscht und die BinFile.H in test2dlg.cpp gelassen.
    Er kompiliert habe aber tritzdem kein zugriff auf meine MTECH.H Variablen obwohl sie in der BinFile.H includiert ist.
    So muss das richtig lauten.

    Danke nochmal


Anmelden zum Antworten