Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Recherche de compilateur mingw qui supporte les regex du c++11.  (Lu 5380 fois)

0 Membres et 1 Invité sur ce sujet

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Recherche de compilateur mingw qui supporte les regex du c++11.
« le: Décembre 03, 2013, 09:15:03 am »
Salut, j'ai télécharger la version 4.8.0 de mingw que j'ai trouvé sur le site de Qt, le fichier exécutable de mon compilateur s'appelle  i686-w64-mingw32.g++.

Mais cette version est apparemment encore expérimentale, car, sur le site officiel de mingw, quand j'installe la dernière version de mingw qui est la version 4.8.1 apparemment, et que je veux compiler un code qui utilise les std::thread du c++11, il m'indique une erreur comme quoi std::thread n'existe pas. (Et je ne trouve aucun exécutable qui se nomme i686-w64-mingw32.g++ dans le dossier de mingw)

J'ai décidé donc de garder ma version actuelle de mingw, mais, le soucis c'est que, je suis obligé d'utiliser boost car ce code que j'ai trouvé sur internet ne compile pas avec ma version actuelle de mingw :

std::vector<std::string> split(const string& input, const string& regex) {
    // passing -1 as the submatch index parameter performs splitting
    std::sregex_token_iterator
        first{input.begin(), input.end(), regex, -1},
        last;
    return {first, last};
}
 

Donc voilà je recherche une version de mingw qui implémente cette fonction du c++11 afin de pouvoir me passer de boost. (A moins que cette version de mingw n'existe pas encore et que ce n'est possible de faire cela qu'avec un compilateur non open source ? :o )

Car ma version de mingw ne me trouve pas la classe sregex_token_iterator. :/




minirop

  • Sr. Member
  • ****
  • Messages: 254
    • Voir le profil
    • http://dev.peyj.com
Re : Recherche de compilateur mingw qui supporte les regex du c++11.
« Réponse #1 le: Décembre 03, 2013, 04:14:57 pm »
j'utilise mingw 4.8.1 TDM et ce code compile (à condition de mettre "std::regex(regex)" ligne 4).

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Recherche de compilateur mingw qui supporte les regex du c++11.
« Réponse #2 le: Décembre 03, 2013, 05:42:47 pm »
Ok impéc ça marche chez moi aussi. :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Recherche de compilateur mingw qui supporte les regex du c++11.
« Réponse #3 le: Décembre 03, 2013, 06:30:49 pm »
Au cas où : cette fonction split s'implémente aussi très facilement en C++98 (avec string::find_if et string::substr). Ce serait dommage d'avoir besoin d'une dépendance compliquée ou d'un compilo en particulier pour si peu.
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Recherche de compilateur mingw qui supporte les regex du c++11.
« Réponse #4 le: Décembre 04, 2013, 08:47:02 am »
Oui c'est vrai, je pense que je vais remettre mon ancien compilo car j'ai des problèmes d'incompatibilité d'architectures avec le compilo TDM : i386 architecture incompatible avec i386:86_64.

J'ai essayé de télécharger la version TDM de sfml, j'ai même essayé de recompiler smfml avec mon nouveau compilateur mais ça ne résoud pas le problème.

Peut être que le problème vient d'une dépendance de SFML...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Recherche de compilateur mingw qui supporte les regex du c++11.
« Réponse #5 le: Décembre 04, 2013, 09:15:08 am »
Citer
i386 architecture incompatible avec i386:86_64.
C'est un problème d'environnement de ton côté : tu as des choses en 32 bits et d'autres en 64 bits.
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Recherche de compilateur mingw qui supporte les regex du c++11.
« Réponse #6 le: Décembre 04, 2013, 09:53:16 am »
Bah, je n'ai que SFML..., que j'ai compilé avec le flag -m32

Lorsque je compiler SFML pas de problème mais lorsque je veux la link à un autre projet en 32 bits il me sort des erreurs d'incompatiblité et ceci :

obj\Debug\main.o||In function `main':|
D:\Projets\Projets-c++\TestSFML\main.cpp|7|undefined reference to `___gxx_personality_sj0'|
D:\Projets\Projets-c++\TestSFML\main.cpp|7|undefined reference to `__Unwind_SjLj_Register'|
D:\Projets\Projets-c++\TestSFML\main.cpp|7|undefined reference to `___main'|
D:\Projets\Projets-c++\TestSFML\main.cpp|9|undefined reference to `__ZNSt6localeC1Ev'|
D:\Projets\Projets-c++\TestSFML\main.cpp|9|undefined reference to `__ZNSt6localeD1Ev'|
D:\Projets\Projets-c++\TestSFML\main.cpp|28|undefined reference to `__ZNSt6localeD1Ev'|
D:\Projets\Projets-c++\TestSFML\main.cpp|28|undefined reference to `__Unwind_SjLj_Resume'|
D:\Projets\Projets-c++\TestSFML\main.cpp|28|undefined reference to `__Unwind_SjLj_Unregister'|
obj\Debug\main.o||In function `__tcf_0':|
c:\mingw\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\iostream|74|undefined reference to `__ZNSt8ios_base4InitD1Ev'|
obj\Debug\main.o||In function `__static_initialization_and_destruction_0':|
c:\mingw\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\iostream|74|undefined reference to `__ZNSt8ios_base4InitC1Ev'|
c:\mingw\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\iostream|74|undefined reference to `_atexit'|
obj\Debug\main.o||In function `std::basic_string<unsigned int, std::char_traits<unsigned int>, std::allocator<unsigned int> >::~basic_string()':|
c:\mingw\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\bits\basic_string.h|538|undefined reference to `___gxx_personality_sj0'|
c:\mingw\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\bits\basic_string.h|538|undefined reference to `__Unwind_SjLj_Register'|
c:\mingw\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\bits\basic_string.h|539|undefined reference to `__Unwind_SjLj_Unregister'|
obj\Debug\main.o||In function `std::basic_string<unsigned int, std::char_traits<unsigned int>, std::allocator<unsigned int> >::_Rep::_M_destroy(std::allocator<unsigned int> const&)':|
c:\mingw\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\bits\basic_string.tcc|449|undefined reference to `__ZNSaIcED1Ev'|
obj\Debug\main.o||In function `__gnu_cxx::new_allocator<char>::deallocate(char*, unsigned int)':|
c:\mingw\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\ext\new_allocator.h|110|undefined reference to `__ZdlPv'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__ZdlPv'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `___gxx_personality_sj0'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__Unwind_SjLj_Register'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__Unwind_SjLj_Unregister'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__Unwind_SjLj_Resume'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `___gxx_personality_sj0'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__Unwind_SjLj_Register'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__Unwind_SjLj_Unregister'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__Unwind_SjLj_Resume'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `___gxx_personality_sj0'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__Unwind_SjLj_Register'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__Unwind_SjLj_Unregister'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__Unwind_SjLj_Resume'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `___gxx_personality_sj0'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__Unwind_SjLj_Register'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__Unwind_SjLj_Unregister'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `_memset'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `_glReadPixels@28'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__ZdlPv'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__Znwj'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__ZdlPv'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__ZdlPv'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `__Unwind_SjLj_Resume'|
C:\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp:(.rdata$_ZTIN2sf11NonCopyableE[__ZTIN2sf11NonCopyableE]+0xfffffffffffff540)||undefined reference to `__ZTVN10__cxxabiv117__class_type_infoE'|
||=== Build finished: 40 errors, 0 warnings (0 minutes, 2 seconds) ===|

Ha moins qu'on ne puisse pas compiler en 32 bits avec le compilateur mingwTDM ou bien il faut indiquer un autre flag de compilation ???

Il me semble qu'il ne veut pas me le compiler en 32 bits.

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Recherche de compilateur mingw qui supporte les regex du c++11.
« Réponse #7 le: Décembre 04, 2013, 10:02:10 am »
Bon le problème se situe plus haut encore même car même un code tout simple ne compile pas.

Je compile avec code::blocks et mingwTDM et je me tape cette erreur.

int main () {
   

    return 0;

}
 
obj\Debug\main.o||In function `main':|
D:\Projets\Projets-c++\TestSFML\main.cpp|6|undefined reference to `___main'|
||=== Build finished: 1 errors, 0 warnings (0 minutes, 0 seconds) ===|

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Recherche de compilateur mingw qui supporte les regex du c++11.
« Réponse #8 le: Décembre 04, 2013, 10:11:31 am »
Ha non j'ai rien dis le code ci-dessus compile c'est juste que j'avais spécifier ld.exe en tant que compilateur pour les librairies dynamique donc...

Part contre quand je link SFML, ça ne compile toujours pas. :/


Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Recherche de compilateur mingw qui supporte les regex du c++11.
« Réponse #9 le: Décembre 04, 2013, 10:25:43 am »
Bon ça me fait la même erreur pour la libriarie std je pense que l'exe pour le linkage doit être foireux...
obj\Debug\main.o||In function `main':|
D:\Projets\Projets-c++\TestSFML\main.cpp|9|undefined reference to `___main'|
D:\Projets\Projets-c++\TestSFML\main.cpp|10|undefined reference to `__ZSt4cout'|
D:\Projets\Projets-c++\TestSFML\main.cpp|10|undefined reference to `__ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc'|
D:\Projets\Projets-c++\TestSFML\main.cpp|10|undefined reference to `__ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_'|
D:\Projets\Projets-c++\TestSFML\main.cpp|10|undefined reference to `__ZNSolsEPFRSoS_E'|
obj\Debug\main.o||In function `__tcf_0':|
c:\mingw\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\iostream|74|undefined reference to `__ZNSt8ios_base4InitD1Ev'|
obj\Debug\main.o||In function `__static_initialization_and_destruction_0':|
c:\mingw\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\iostream|74|undefined reference to `__ZNSt8ios_base4InitC1Ev'|
c:\mingw\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\iostream|74|undefined reference to `_atexit'|
c:\mingw\bin\..\lib\gcc\x86_64-w64-mingw32\4.8.1\..\..\..\..\x86_64-w64-mingw32\lib\..\lib\libmingw32.a(lib64_libmingw32_a-crt0_c.o)||In function `main':|
h:\crossdev\src\mingw-w64-v3-svn\mingw-w64-crt\crt\crt0_c.c|18|undefined reference to `WinMain'|
||=== Build finished: 9 errors, 0 warnings (0 minutes, 1 seconds) ===|


Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Recherche de compilateur mingw qui supporte les regex du c++11.
« Réponse #10 le: Décembre 04, 2013, 10:38:29 am »
Mwai bof il est bizarre ton compilateur TDM, maintenant il ne veut de nouveau plus me compiler un simple main.
Je vais repasser au compilateur mingw, même si il ne reconnait pas les std::sstring_token_iterator.