CString
-
Hi ich bin an einer DirectX 9 Anwendung....
Ich habe das Problem, dass ich CString, float, long, double etc. benutzen möchte. Wenn ich aber die Standtartkomponenten include (StdAfx.h oder afxwin.h)
Kommt die Meldung window.h sei schon included... Wie kann ich dies umgehen? Kann window.h nicht "auscluden", da dies wohl in einer lib included ist.... Wie löse ich das ganze nun?
Vielen Dank für die Antworten!
-
addict schrieb:
float, long, double etc. benutzen möchte.
WTF?
addict schrieb:
die Standtartkomponenten include (StdAfx.h
WTF?
addict schrieb:
in einer lib included ist
WTF?
Formuliere die Frage sinnvoll.
Bye, TGGC (Keine Macht den Dummen)
-
Meine Frage ist aus meiner Sicht Sinvoll gestellt!
Ich möchte einfach wissen, welche Bibliothek ich includen muss, damit ich CString, longs und floats benützen kann???? <-Datentypen!
-
Du erzählst Unsinn. Bibliotheken kann man nicht includen. float kann man immer benutzen. usw. Ausserdem hat es rein gar nichts mit Spiele-/Grafikprogrammierung zu tun.
Bye, TGGC (Keine Macht den Dummen)
-
einfach mal in die msdn schauen da steht welche header du wofür brauchst... bei CString steht z.b. #include <afx.h>
dann musst du noch dem linker sagen das er auch die mfc libs linken soll (geht unter projekt settings)
-
Mach ne MFC Dialog-Anwendung und schmeiss die Dialog Resourcen weg
Dann haste allesJa ich gebe zu, das ist meine Methode ein Programm mit MFC Unterstützung zu schreiben
-
edit: sorry völlig sinnfrei
-
Dieser Thread wurde von Moderator/in rapso aus dem Forum Spiele-/Grafikprogrammierung in das Forum MFC mit dem Visual C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
@addict: Wurde deine Frage durch Cpp_Junky nun beantwortet?
@TGGC: Es gibt Leute die nicht so tolle ...... sind wie Du. Die Frage war verständlich formuliert. Wenn man sich etwas auskennt versteht man sie auch.
Wenn Du nicht helfen willst halte dich aus Fachthreads raus.
-
Die MFC-Header wollen Windows unbedingt als allererste #includen.
Wenn dir nur CString fehlt, kannst du auch die WTL-Header verwenden, damit erzeugst du weniger Abhängigkeiten. Aber wenn dich das nicth stört, geht Cpp_Junky's Vorschlag genausogut.vielleicht hat der arme TGCC die Frage nur nicht verstanden...
-
warum CString ?
Nur so aus interesse...
-
Ist wohl Geschmackssache - nix gegen std::string, aber CString ist (a) komfortabler, vor allem im Zusammenhang mit API-aufrufen, und (b) ist garantiert refernzgezählt.
-
Wenn ich afx.h include kommt immernoch die Meldung window.h sei bereits included....
Bitte helft mir....
-
afx.h als erstes includen.
-
habe ich gemacht...
dann kommen 2 Fehlermeldungen:nafxcwd.lib(afxmem.obj) : error LNK2005: "void * _cdecl operator new(unsigned int)" (??2@YAPAXI@Z) bereits in LIBCMTD.lib(new.obj)definiert nafxcwd.lib(afxmem.obj) : error LNK2005: "void * _cdecl operator delete(void *)" (??3@YAXPAX@Z) bereits in LIBCMTD.lib(dbgdel.obj) definiert
Wie löse ich dieses Problem?
Ich kapiere das ganze langsam nichtmehr....
-
Es gibt zwei unterschiedliche "new" und "delete" - definitionen aus verschiedenen Varianten der Laufzeitbibliothek. Die Laufzeitbibliothek der MFC muß mit den Projekteinstellungen üebreinstimmen
Compiler settings:
General - "Use MFC in a dynamic library"
C++ - Code generation - Runtime Library - Multithreaded DLL debug (für DEBUG) / Multithreaded DLL (für release)- oder -
General - "Use MFC in a static library"
C++ - Code generation - Runtime Library - Multithreaded debug (für DEBUG) / Multithreaded (für RELEASE)
-
addict schrieb:
habe ich gemacht...
dann kommen 2 Fehlermeldungen:nafxcwd.lib(afxmem.obj) : error LNK2005: "void * _cdecl operator new(unsigned int)" (??2@YAPAXI@Z) bereits in LIBCMTD.lib(new.obj)definiert nafxcwd.lib(afxmem.obj) : error LNK2005: "void * _cdecl operator delete(void *)" (??3@YAXPAX@Z) bereits in LIBCMTD.lib(dbgdel.obj) definiert
Wie löse ich dieses Problem?
das passiert wenn man ein nicht-mfc-projekt mit den mfc-libs linken will. was helfen könnte: in den linkereinstellungen 'alle standard-libs ignorieren'
-
hilft alles nichts... Wenn ich die Standart libs ignoriere gibt es ca. 350 Fehler...
Gibt es einen vergleichbaren Datentyp???
Ich brauche einfach einen String, welchen ich zusammenfügen kann und etwas wie einen Array....Bitte helft mir....
-
Doch, was ich geschrieben habe hilft (normalerweise)
Linkst du noch andere Bibliotheken? Was für Fehler bekommst du (ohne "Standardbibliotheken ignorieren")?
an CString kommst du auf verscheidene Arten ran - mußt aber jedesmal ähnliche Probleme meistern.
http://www.codeproject.com/script/profile/whos_who.asp?msg=867150&id=175#xx867150xx
-
Es funktioniert nicht mehr sobald ich d3d9.h und d3dx9.h include
ich include noch andere Bibliotheken (dxguid.lib, d3d9.lib und d3dx9.lib)Der Fehler mit windows.h alreay included kommt bereits, wenn ich nur eine Bibliothek include...
Wenn man mit DirectX arbeitet kann man doch sicherlich auch CStrings und Array brauchen oder nicht?
-
Du mußt zwei Sachen lösen:
Problem (1)
Der Fehler mit windows.h alreay included kommt bereits, wenn ich nur eine Bibliothek include...
Darf ich nochmal wiederholen? afx.h als allererstes reinladen. Dann kommt dieser Fehler nicht.
AFX.H besteht einfach darauf, das windows.h noch nicht reingeladen wurde. Das macht zwar manchmal Ärger, aber im Normallfall ist das kein Problem. Also am besten in die stdafx.h deines Projekts:#include <afx.h> // ... anderes MFC-Zeugs!? #include <d3d9.h> // ...
Problem (2)
Wenn du verschiedene Bibliotheken linkst, die von der C++ Laufzeitbibliotheken abhängen, müssen alle diese Bilbiotheken auf die gleiche Laufzeit aufbauen.Die C++-Laufzeit gibt es mit den Flags single/multithreade, debug/release, und lib/dll, ingesamt 6 Varianten (Multithreaded erfordert DLL)
Die Direct-X - Libs sollten davon unabhängig sein, da sie nur import-Bibliotheken sind.
Relevant sind aber die MFC-Bibliotheken: die MFC-DLL-Bibliotheken fordert die Multithreaded DLL Laufzeit, die MFC-Static-Bibliotheken fordern die Multithreaded Static - Laufzeit.