Umstellung auf Static Link, Fehler C2010



  • Hallo Zusammen!

    Ich habe die Aufgabe gekriegt ein Projekt welches vorher DLL's dynamisch gelinkt hat auf static Link umzustellen. Fragt mich bitte nicht nach dem Sinn oder Unsinn der Sache...

    Dazu habe ich in der DSP den Switch /MD durch /MT ersetzt. Bin nicht sicher ob das notwendig ist. Dann habe ich natürlich auch den Switch /d "_AFXDLL" entfernt, damit statisch gelinkt wird.

    Einerseits kriege ich massenweise Warnungen folgender Art:

    c:\some_path\some_file.hxx(42) : warning C4251: 'file' : class 'CString' benoetigt eine DLL-Schnittstelle, die von Clients von class 'SomeClass' verwendet wird c:\program files (x86)\microsoft visual studio\vc98\mfc\include\afx.h(368) : Siehe Deklaration von 'CString'

    bei denen ich mir überhaupt nicht erklären kann was die zu bedeuten haben und wie ich sie vermeiden kann.

    Andererseits kriege ich auch einige Fehler in der folgenden Templatedefinition:

    #ifdef _AFXDLL
    #define BEGIN_MESSAGE_MAP_T(theClass) \
    	template <class BASE> const AFX_MSGMAP* PASCAL theClass<BASE>::_GetBaseMessageMap() \
    		{ return &BASE::messageMap; } \
    	template <class BASE> const AFX_MSGMAP* theClass<BASE>::GetMessageMap() const \
    		{ return &theClass<BASE>::messageMap; } \
    	template <class BASE> AFX_COMDAT AFX_DATADEF const AFX_MSGMAP theClass<BASE>::messageMap = \
    	{ &theClass<BASE>::_GetBaseMessageMap, &theClass<BASE>::_messageEntries[0] }; \
    	template <class BASE> AFX_COMDAT const AFX_MSGMAP_ENTRY theClass<BASE>::_messageEntries[] = \
    	{ \
    
    #else
    #define BEGIN_MESSAGE_MAP_T(theClass<BASE>, BASE) \
    	template <class BASE> const AFX_MSGMAP* theClass<BASE>::GetMessageMap() const \
    		{ return &theClass<BASE>::messageMap; } \
    	template <class BASE> AFX_COMDAT AFX_DATADEF const AFX_MSGMAP theClass<BASE>::messageMap = \
    	{ &BASE::messageMap, &theClass<BASE>::_messageEntries[0] }; \
    	template <class BASE> AFX_COMDAT const AFX_MSGMAP_ENTRY theClass<BASE>::_messageEntries[] = \
    	{ \
    
    #endif
    

    Fehler an der Zeile 13: C:\some_path\some_file.h(23) : error C2010: '<' : unerwartetes Zeichen in Makro-Parameterliste

    Kann mir nicht erklären warum der Fehler kommt, da dies so in der MSDN für Templates steht. Also müsste das gehen...

    Hat einer evtl. einen Tip wo das Problem ist?

    Gruß Panic


Anmelden zum Antworten