Problème Boost & STLPort sous Mingw (sous wxDev-C++)

Problème Boost & STLPort sous Mingw (sous wxDev-C++) - C++ - Programmation

Marsh Posté le 21-10-2008 à 09:50:04    

Bonjour,
 
Je compile avec GCC (enfin, j'essaye) un programme précédemment écrit sous Visual C++ (2005), qui a assez peu de classes (6) et qui fonctionne très bien.
Mais j'ai des problèmes !!!
 
J'utilise l'IDE wxDev-C++ qui est un fork modernisé de Dev-C++ comme à une époque j'utilisais cette IDE, je pense ne pas être trop perdu... mais pourtant...
 
J'ai des problèmes avec mes includes
 
Imaginons que je compile une classe Toto
J'ai découpé les header et les cpp en 2 fichiers :
Toto.h   qui contient la définition
Toto.cpp qui contient le source
 
Si je mets un include dans Toto.cpp (#include "Toto.h" )  
alors j'ai une erreur:
1 C:\MonProjetBidon\Toto.cpp In file included from Toto.cpp  
 
Super explicite, vous aurez remarqué.
 
Alors, je supprime cette include et je configure le compilateur pour utiliser des "precompiled header", et là, à la suprise générale :
30 C:\MonProjetBidon\Toto.cpp `Toto' has not been declared  
 
 
Toto.cpp et Toto.h sont dans le même répertoire qui est le même que le fichier projet .dev
 
J'ai aussi essayé avec ./


Message édité par NounouRs le 03-11-2008 à 11:50:54
Reply

Marsh Posté le 21-10-2008 à 09:50:04   

Reply

Marsh Posté le 21-10-2008 à 10:27:37    

Ok,  
 
Mauvaise interprétation de ma part, c'est la mise en page des erreurs de wxDev-C++  qui m'a mis dedans.
En fait, c'est une ligne titre, pas un message d'erreur, les erreurs viennent après
 
Et apparemment, j'ai des erreur sur les lib boost... il a l'air d'avoir bien fait l'include, mais je quand meme pas trouver les classes auquelles je fais référence.

Reply

Marsh Posté le 21-10-2008 à 12:04:27    

Par contre, je n'ai pas résolu mon problème.
 
J'utilise des boost::filesystem::wpath  je pense que les headers de boost (hpp) sont bien trouvés, car je vois le chemin dans les directives de compilations (et ca marche sous Visual)   j'utilise un include en portée large "<>" sous la forme :
#include <boost/filesystem/path.hpp>
 
Je ne vois vraiment pas ce qu'il peut lui manquer.

Reply

Marsh Posté le 21-10-2008 à 18:08:00    

C'est quoi le contraire de BOOST_FILESYSTEM_NARROW_ONLY ????  
 
J'ai fait un programme tout simple pour tester boost + gcc (mingw), avec une méthode contenant
std::wstring test(L"yahoo" );
boost::filesystem::wpath toto(test);
 
Et bizarrement, pas de problème avec wstring, mais par contre wpath, ne passe pas :)
 27    a.cpp    `wpath' is not a member of `boost::filesystem'  
 
Mais il se gourre !!!!


Message édité par NounouRs le 21-10-2008 à 18:08:47
Reply

Marsh Posté le 22-10-2008 à 09:19:42    

up

Reply

Marsh Posté le 29-10-2008 à 21:17:18    

Tu as bien ajoute le repertoire des includes de boost dans le projet ? Ca ressemble exactement a ca... J'ai justement configure hier code::blocks pour boost et gcc (en fait boost::thread) et c'est passe comme sur des roulettes  :D


---------------
Un blog qu'il est bien
Reply

Marsh Posté le 30-10-2008 à 10:56:05    

Oui, je l'ai configuré, mais ca fait penser que la configuration n'est pas passée, j'ignore pourquoi.
Donc, je vais chercher dans cette direction, mais je risque de revenir vers vos conseils.
 
Vaut il mieux ajouter ces chemins au projet ou à l'interface ?

Reply

Marsh Posté le 30-10-2008 à 11:16:05    

Perso je les mets trjrs dans les options de CB et non des projets, comme ça j'ai aps à me poser la question d ele faire. En outre ca me permets rapidos de creer un chtit fichier de test et d'avoir ttes mes libs de dispos.

Reply

Marsh Posté le 30-10-2008 à 17:01:16    

J'ai fait un petit projet test, avec uniquement un test de la librairie Boost et voilà ce qu'il en ressort.
 
Lors d'utilise des boost::filesystem::path  aucun probleme, la compilation se passe bien, l'inclusion de Boost n'est donc pas en cause (meme si je vais devoir trouver d'ou vient mon probleme dans mon gros projet)
 
Par contre, lorsque le passe en wpath (et j'ai de l'expérience, j'utilise de dizaine de wpath dans mon gros projet), rien ne va plus, j'ai des messages d'erreur :
Ligne de code :  

Code :
  1. std::wstring test(L"yahoo" );
  2. boost::filesystem::wpath toto(test);


erreur retournée :

27 C:\Documents and Settings\moi\Mes documents\retest\a.cpp `wpath' is not a member of `boost::filesystem'


 
En plus à l'ouverture de mes projet, j'ai 30 secondes de lecture / parsing des lib boost (en-tetes) c'est un peu long, on ne peut pas l'éviter ?
 
Voici l'extrait du fichier path.hpp de Boost, comme on peut le voir, la déclaration de wpath n'est pas des plus compliquée... alors qu'est ce qui bloque ???

Code :
  1. #ifndef BOOST_FILESYSTEM_PATH_HPP
  2. #define BOOST_FILESYSTEM_PATH_HPP
  3. [...] //libs boost
  4. #include <string>
  5. #include <algorithm> // for lexicographical_compare
  6. #include <iosfwd>    // needed by basic_path inserter and extractor
  7. #include <stdexcept>
  8. #include <cassert>
  9. # ifndef BOOST_FILESYSTEM_NARROW_ONLY
  10. #   include <locale>
  11. # endif
  12. #include <boost/config/abi_prefix.hpp> // must be the last #include
  13. //----------------------------------------------------------------------------//
  14. namespace boost
  15. {
  16.   namespace BOOST_FILESYSTEM_NAMESPACE
  17.   {
  18.     template<class String, class Traits> class basic_path;
  19.     struct path_traits;
  20.     typedef basic_path< std::string, path_traits > path;
  21.     struct path_traits
  22.     {
  23.       typedef std::string internal_string_type;
  24.       typedef std::string external_string_type;
  25.       static external_string_type to_external( const path &,
  26.         const internal_string_type & src ) { return src; }
  27.       static internal_string_type to_internal(
  28.         const external_string_type & src ) { return src; }
  29.     };
  30. # ifndef BOOST_FILESYSTEM_NARROW_ONLY
  31.     struct BOOST_FILESYSTEM_DECL wpath_traits;
  32.    
  33.     typedef basic_path< std::wstring, wpath_traits > wpath;

Message cité 1 fois
Message édité par NounouRs le 30-10-2008 à 17:01:57
Reply

Marsh Posté le 30-10-2008 à 17:59:42    

Je tiens peut etre un début de réponse...  
 
wcout    comment fait on pour l'utiliser avec g++ ? (Mingw)

Reply

Marsh Posté le 30-10-2008 à 17:59:42   

Reply

Marsh Posté le 03-11-2008 à 09:33:28    

C'est marrant comme on perd avec le temps.
Je pense qu'il faut que j'utilise stlport... ce qui m'étonne c'est qu'il ne soit pas intégré à Dev-C++ (wx)  

Reply

Marsh Posté le 03-11-2008 à 10:54:59    

NounouRs a écrit :


En plus à l'ouverture de mes projet, j'ai 30 secondes de lecture / parsing des lib boost (en-tetes) c'est un peu long, on ne peut pas l'éviter ?


 
Dans les Settings de C::B, t'as une option 'disable file indexing'.

Reply

Marsh Posté le 03-11-2008 à 11:01:46    

C'est fort pratique, merci bien.
 
J'avais toujours cru que stlport était build-in, j'entends par là que elle se compilait avec le projet...   mais il faut des librairies en fait.
Et la distrib officielle de stlport n'en contient pas (normal me direz vous)
 
Savez vous comment compiler stlport sous wxDev-C++ (Mingw) ?
 
Apparemment, il y a des .mak deja fait pour gcc, mais je suis bloqué là, je ne me rappelle pas que wxDev intègre nmake...
 
PS :  j'ai lu les docs de stlport, je n'ai pas vu ce qui m'interressait
 
 
J'ajoute des infos... je tente la compilation avec make en utilise la commande recommendée dans les docs : make -f gcc.mak depend
 
j'utilise le make.exe qui est dans les binaires de wxDev-C++
 
Mais là, rien ne va plus, j'ai des messages d'erreur ( des bin manquants) :
uname: not found
tr: not found
process_begin: CreateProcess((null), uname -v, ...) failed.
 
 
etc etc...
 
c'est comme si tout était fait pour compiler avec gcc sous Linux, mais là, je suis sous Windows... je ne comprend toujours pas comment certains font pour compiler stlport sur mingw (wxdev-c++)
 
J'ai finalement compilé avec une version standalone de mingw (mais je n'ai aucune certitude quant a la compitibilité des lib générées sous wxdevc++)


Message édité par NounouRs le 03-11-2008 à 12:17:06
Reply

Marsh Posté le 07-11-2008 à 10:57:00    

bah en general, tu recupére les Binutils windows en meme temps que mingw. Ils contiennt les versiosn windows de l'ensemble des commandes unix classiques

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed