wohin mit #includes??



  • wohin mit #includes?!?

    kann mir jemand erklären wo man richtigerweise includes reinmacht?
    wann in die header oder cpp datei und wann ins stdafx?

    hab gerade ein problem mit CString. dafür brauch ich ja.

    #include <afx.h>
    

    wenn ich diesen include in mein file schreibe kompliert es sauber durch.
    wenn ich dann noch folgende zeile einfüge:

    CString test[2] = {"foo", "bar"};
    

    dann bekomm ich linker fehler:

    nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCD.lib(new.obj)
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCD.lib(dbgdel.obj)
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
    Debug/foobar.exe : fatal error LNK1120: 2 unresolved externals
    

    wie macht man es also richtig 😕



  • o.k.

    ich vermute mal dass es daran liegt, dass ich "not using mfc" in den project settings eingestellt habe.

    will auch diesmal kein mfc verwenden und daher eh was anderes nehmen.

    aber wenn noch jemand allgemein etwas zur stdafx.h und den includes zu sagen hat, dann raus damit 😉



  • Du wirst wohl std::string verwenden müssen anstatt CString. Das Handling dieser Klasse ist allerdings nicht so angenehm wie bei CString.



  • asr schrieb:

    ich vermute mal dass es daran liegt, dass ich "not using mfc" in den project settings eingestellt habe.

    will auch diesmal kein mfc verwenden und daher eh was anderes nehmen.

    Wenn du VS.NET 2003 benutzt, kannst du CString ohne die MFC benutzen:

    #include <atlstr.h>


Anmelden zum Antworten