HEADer(banging)
-
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 filenameint 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