regex und boost, wie bekomme ich das zum laufen?



  • Ich versuche seit Stunden die regex Bibliothek zum laufen zu bekommen, doch leider hab ich einige Probleme damit.

    Habe auch schon ältere Foreneinträge studiert: http://www.c-plusplus.net/forum/viewtopic.php?t=72284&highlight=regex

    1. die boost sourcen ziehen
    2. bjam ziehen
    3. bjam in das boost Verzeichnis kopieren
    4. bjam -sTOOLS=vc7 oder welchen Compiler du halt hast
    5. lange warten
    6. in den VC++ einstellungen das boost Verzeichnis zu den includes hinzufuegen und boost/lib zu den library verzeichnissen.

    Bis Schritt 5 habe ich alles erfüllt, aber wie soll ich nun das Boost Verzeichnis und die Library zu den Includes von von Visual Studios Net 2003 hinzufügen?

    Wenn ich das gemacht habe, kann ich Regex dann folgendermaßen benutzen?

    #include<boost/regex.hpp> 
    
    using namespace boost; 
    
    bool find(const TCHAR *s) 
    {     
        //   \ wird als \\ notiert!    
        static const boost::regex e("[0-9][0-9]\\:[0-9][0-9]\\.[0-9][A|B]"); // 
        return regex_match(s,e); 
    }
    


  • okay, habs geschafft es einzubinden. nun findet der compiler leider fehler in der header datei von regex. 😞



  • Fehlermeldung?

    ^finds lustig das du dich durch den anderen Mist problemlos durchgewurstelt hast... 👍^



  • Problemlos stimmt nicht ganz. Hab wirklich sehr lange daran gesessen. 😃

    Also zu den Fehlermeldungen.

    Das steht in einer Datei xdebug, die wohl durch regex.hpp eingebunden wird:

    // debug heap support header for Microsoft
    #pragma once
    #ifndef _XDEBUG_
    #define _XDEBUG_
    #include <yvals.h>
    
    #pragma pack(push,8)
    #pragma warning(push,3)
    
    		// SUPPORT FOR DEBUG HEAP
    
     #if !defined(_DEBUG)
      #define _NEW_CRT				new
      #define _DELETE_CRT(_P)		delete (_P)
      #define _DELETE_CRT_VEC(_P)	delete[] (_P)
      #define _STRING_CRT			string
    
     #else /* !defined(_DEBUG) */
      #include <xmemory>
      #include <xstring>
    
    _STD_BEGIN
    struct _DebugHeapTag_t
    	{	// placement new tag type to select debug CRT heap
    	int _Type;
    	};
    _STD_END
    
    _CRTIMP2 void * __cdecl operator new(size_t,
    	const std::_DebugHeapTag_t&, char *, int)
    		_THROW1(std::bad_alloc);	// allocate from the debug CRT heap
    
    ...
    

    Und bei dem letzten Abschnitt, vor dem _CRTIMP2 steht, kommen folgende Fehlermeldungen:

    e:\program files\Microsoft Visual Studio .NET 2003\Vc7\include\xdebug(30): error C2059: syntax error : ')'
    e:\program files\Microsoft Visual Studio .NET 2003\Vc7\include\xdebug(29): error C2143: syntax error : missing ';' before '('
    e:\program files\Microsoft Visual Studio .NET 2003\Vc7\include\xdebug(29): error C2226: syntax error : unexpected type 'size_t'
    e:\program files\Microsoft Visual Studio .NET 2003\Vc7\include\xdebug(29): error C2365: 'new' : redefinition; previous definition was a 'member function'
    e:\program files\Microsoft Visual Studio .NET 2003\Vc7\include\xdebug(29): error C2440: 'initializing' : cannot convert from 'int' to 'void *'
    e:\program files\Microsoft Visual Studio .NET 2003\Vc7\include\xdebug(29): error C2491: 'new' : definition of dllimport data not allowed
    e:\program files\Microsoft Visual Studio .NET 2003\Vc7\include\xdebug(29): warning C4229: anachronism used : modifiers on data are ignored


Anmelden zum Antworten