Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
C++Builder Senior JLI'ler
Anmeldedatum: 04.10.2003 Beiträge: 235
Medaillen: Keine
|
Verfasst am: 22.12.2003, 16:30 Titel: #pragma warning funktioniert nicht |
|
|
Hi Leute,
ich hab endlich meine String Klasse fertig und will die jetzt in einem Projekt benutzen. Ich füge die Datei aber irgendwie so komisch ein das zu jeder Funktion ein Fehler in dieser Art kommt:
"Main.obj : error LNK2005: "public: __thiscall mstring::mstring(char *)"
(??0mstring@@QAE@PAD@Z) bereits in CForm.obj definiert"
vielleicht hilft das:
In Main.cpp füge ich CForm.h ein in die füge ich CObject.h ein in der ich dann die String Klasse einfüge.
Jetzt hab ich bei Projekt->Einstellungen->Linker Projekt Optionen: /force hinzugefügt. Das Programm läuft aber es kommen statt der Fehler Warnungen.
Das sind: 1x LNK4088 1x LNK4075 und 75x LNK4006
Ich hab diese jetzt versucht mit #pragma warning (disable: 4088 4075 4006) abzuschalten. Die Warnungen kommen aber immer noch.
Worann liegt das und wie krieg ich die Warnungen endlich weg?? |
|
Nach oben |
|
|
HotAcid Super JLI'ler
Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 22.12.2003, 19:09 Titel: |
|
|
auch wenn es dir herzlich wenig weiterhilft:
warum benutzt du eine eigene String-Klasse und nicht den STL-String?
cu Felix _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
|
C++Builder Senior JLI'ler
Anmeldedatum: 04.10.2003 Beiträge: 235
Medaillen: Keine
|
Verfasst am: 22.12.2003, 19:20 Titel: |
|
|
Weil ich eben durch dieses komische Includieren auch solche Fehler verursache.
Und außerdem is mir sowas Selbstgemachtes lieber. Da kenn ich alle Funktionen und was nicht geht kann ich einfach erweitern. |
|
Nach oben |
|
|
LordHoto JLI'ler
Alter: 35 Anmeldedatum: 27.03.2003 Beiträge: 137 Wohnort: Gelnhausen Medaillen: Keine
|
Verfasst am: 26.12.2003, 13:09 Titel: |
|
|
in der Header datei auch :
Code: |
#ifndef __MYSTRING__
#define __MYSTRING__
// hier der Code
#endif // __MYSTRING__
|
gemacht? Weil sonst hast ja 2 definitionen |
|
Nach oben |
|
|
HotAcid Super JLI'ler
Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 26.12.2003, 14:29 Titel: |
|
|
alternati geht statt
LordHoto hat Folgendes geschrieben: |
Code: |
#ifndef __MYSTRING__
#define __MYSTRING__
// hier der Code
#endif // __MYSTRING__
|
|
auch
cu Felix _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
|
LordHoto JLI'ler
Alter: 35 Anmeldedatum: 27.03.2003 Beiträge: 137 Wohnort: Gelnhausen Medaillen: Keine
|
Verfasst am: 26.12.2003, 14:50 Titel: |
|
|
ich glaub aber nur der visual studio compiler aktezpierts , ich glaub gcc will das net und wir wollen doch alle protable Software!
MFG
LordHoto |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 26.12.2003, 17:05 Titel: |
|
|
Wer hier mir DirectX und WinAPI programmiert, kann ruhig auch #pragma once benutzen - das ist eh schon alles nicht mehr Plattformunabhängig... _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
LordHoto JLI'ler
Alter: 35 Anmeldedatum: 27.03.2003 Beiträge: 137 Wohnort: Gelnhausen Medaillen: Keine
|
Verfasst am: 26.12.2003, 17:46 Titel: |
|
|
aber da sieht man nicht mit was er Arbeitet und später hat man weniger zu tun es zu portetieren!
MFG
LordHoto |
|
Nach oben |
|
|
C++Builder Senior JLI'ler
Anmeldedatum: 04.10.2003 Beiträge: 235
Medaillen: Keine
|
Verfasst am: 26.12.2003, 19:34 Titel: |
|
|
also ich habs so gemacht:
Code: |
#ifndef __MYSTRING_H
#define __MYSTRING_H
//hier der Code
#endif |
das funktioniert genauso wenig wie:
Code: |
#pragma once
//hier der code |
sonst hats eigentlich auch funktioniert |
|
Nach oben |
|
|
LordHoto JLI'ler
Alter: 35 Anmeldedatum: 27.03.2003 Beiträge: 137 Wohnort: Gelnhausen Medaillen: Keine
|
Verfasst am: 26.12.2003, 19:39 Titel: |
|
|
schreib mal den headercode!
MFG
LordHoto |
|
Nach oben |
|
|
C++Builder Senior JLI'ler
Anmeldedatum: 04.10.2003 Beiträge: 235
Medaillen: Keine
|
Verfasst am: 27.12.2003, 07:17 Titel: |
|
|
ich hab in der header datei gleich alle methoden geschrieben die lass ich mal weg:
Code: |
#pragma once
#include <iostream.h>
#include <math.h>
#include <windows.h>
#include <stdio.h>
class mstring
{
private://Attribute
char *string;//(dynamisches array) enthält char-zeichen
int Length;
bool error;//wenn error gleich true Fehler passiert
char *errortext;//hier drin ist die Beschreibung des Fehlers
void reseterror(void){error=false;
strcpy(errortext,"");}
void seterror(char *error_text){error=true; strcpy(errortext,error_text);}
public://Memberfunktionen
#define MAX_LENGTH 256
mstring(void);
mstring(char *String);
mstring(char Char);
~mstring();
//setters
void set(char *String);
void set(char Char);
void del(int Pos,int Anzahl);
void ins(int Pos,char *String);
void ins(int Pos,char Char);
void repl(int Pos, char *String);
void repl(int Pos, char Char);
void add(char *String);
void add(char Char);
int find(char *String);
//int find(char Char);
char operator [](int Pos);
void operator =(char *String){set(String);}
char *operator <<(mstring mystring){ return mystring.get();}
//void operator =(char Char){set(Char);}
//getters
double getreal(void);
int getint(void);
int length(void);
char get(int Pos);
char *get(void);
bool failed(void){return error;}
char *geterrortext(void){return errortext;}
};
double StrToFloat(char *String);
char *FloatToStr(double real);
int StrToInt(char *String);
char *IntToStr(int integer);
double Betrag(double zahl);
|
|
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 27.12.2003, 12:26 Titel: |
|
|
Versuchst du vielleicht doch, den Header zweimal zu includieren?
#pragma once verhinderst zwar, dass er zweimal eingebunden wird, aber wenn du dann im Header definierte Objekte(Klassen, Funktionen, Variablen, etc...) in zwei cpps gleichzeitig einbinden willst, dann kann der Kompiler die Funktions-(Klassen-, etc...)namen nicht erkennen, weil er das nochmalige Einbinden verhindert _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
C++Builder Senior JLI'ler
Anmeldedatum: 04.10.2003 Beiträge: 235
Medaillen: Keine
|
Verfasst am: 03.01.2004, 14:17 Titel: |
|
|
|
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 03.01.2004, 22:12 Titel: |
|
|
Da haben wirs ja - du bindest CObject.h einmal direkt in CForm.h und zwei mal indirekt über CEdit.h und CLabel.h ein. Wenn du das includen von CObject.h in CForm.h weglässt, sollte es funktionieren. Die in CObjekt deklarierten Objekte sind dann ja durch die anderen beiden Header auch verfügbar _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
C++Builder Senior JLI'ler
Anmeldedatum: 04.10.2003 Beiträge: 235
Medaillen: Keine
|
Verfasst am: 04.01.2004, 11:24 Titel: |
|
|
nein, das funktioniert leider auch nicht |
|
Nach oben |
|
|
|