CString
-
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.
-
Es funktioniert!
Du kannst dir gar nicht vorstellen, wie happy ich gerade bin!
Es war doch die Multithreaded DLL-Option....vielen Dank!