[C++] Probleme de link (STL et solaris)

Probleme de link (STL et solaris) [C++] - C++ - Programmation

Marsh Posté le 19-06-2003 à 13:40:58    

Bonjour,
 
voila j'ai un petit pb de symboles lors du link d'un projet concernant certaines def propre a la STL, environement Solaris (copilé en 64 bit)
 

Code :
  1. std::char_traits<wchar_t>::compare(wchar_t const*, wchar_t const*, unsigned long) osbprompt.o
  2. std::char_traits<wchar_t>::eq(wchar_t const&, wchar_t const& ) DocumentModel.o
  3. std::char_traits<wchar_t>::to_int_type(wchar_t const& ) DocumentModel.o
  4. std::char_traits<wchar_t>::assign(wchar_t&, wchar_t const& ) SBinet.o
  5. std::char_traits<wchar_t>::find(wchar_t const*, unsigned long, wchar_t const& ) SBinetURL.o
  6. std::char_traits<wchar_t>::not_eof(unsigned long const& ) DocumentModel.o
  7. std::char_traits<wchar_t>::to_char_type(unsigned long const& ) DocumentModel.o
  8. std::char_traits<wchar_t>::eof() DocumentModel.o
  9. std::char_traits<wchar_t>::length(wchar_t const*) SBinet.o
  10. std::char_traits<wchar_t>::assign(wchar_t*, unsigned long, wchar_t) SBinetHttpStream.o
  11. std::char_traits<wchar_t>::copy(wchar_t*, wchar_t const*, unsigned long) SBinet.o
  12. std::char_traits<wchar_t>::move(wchar_t*, wchar_t const*, unsigned long) SBinet.o
  13. std::char_traits<wchar_t>::eq_int_type(unsigned long const&, unsigned long const& ) DocumentModel.o


 
Par default aucun flag passes a GCC (excepet pour compile 64bits), version 3.2.3.
 
En regardant de plus pres, je vois que char_traits<wchar_t> c defini uniquement lorsque -D_GLIBCPP_USE_WCHAR_T est defini a la compile (ds le header char_traits.h).
 
Donc je le rajoute aux options g++ et la je recupere une erreur a la compile et plsu au link avec

Code :
  1. /usr/local/include/c++/3.2.3/cwchar:157: `vfwscanf' not declared
  2. /usr/local/include/c++/3.2.3/cwchar:159: `vswscanf' not declared
  3. /usr/local/include/c++/3.2.3/cwchar:161: `vwscanf' not declared
  4. /usr/local/include/c++/3.2.3/cwchar:176: `wcstof' not declared


 
Hors la je seche je vois pas trop quoi faire ces symboles sont #undef effectivement ds le header cwchar mais bon je vois pas trop ce que je dois rajouter.
 
 
Qqun aurait une piste pour m'eclairer ?
 :jap:  

Reply

Marsh Posté le 19-06-2003 à 13:40:58   

Reply

Marsh Posté le 19-06-2003 à 14:07:59    

la norme ne donne que ça selon http://www.dinkumware.com/manuals/ [...] wchar.html
 
 

Code :
  1. int fwscanf(FILE *stream, const wchar_t *format, ...);
  2. int swscanf(const wchar_t *s,
  3.     const wchar_t *format, ...);
  4. int wscanf(const wchar_t *format, ...);
  5. int fwprintf(FILE *stream, const wchar_t *format, ...);
  6. int swprintf(wchar_t *s, size_t n,
  7.     const wchar_t *format, ...);
  8. int wprintf(const wchar_t *format, ...);
  9. int vfwprintf(FILE *stream, const wchar_t *format,
  10.     va_list arg);
  11. int vswprintf(wchar_t *s, size_t n, const wchar_t *format,
  12.     va_list arg);
  13. int vwprintf(const wchar_t *format,
  14.     va_list arg);


 
mais bon, quand je regarde dans mon header, toutes les fonctions que tu demandes ou pourtant l'air d'etre ok
 
essaye avec le namespace __gnu_cxx pour voir
 
et hesite pas à poster un petit bout de code significatif pour exclure tout mauvaise version de compilo ou bibliothèque cassée


Message édité par Taz le 19-06-2003 à 14:12:18
Reply

Marsh Posté le 19-06-2003 à 14:48:57    

Merci pour le lien :jap:
 
ben les fonctions non definies c pas trop grave car c deja de la bidouille, le probleme de base c lle log du link en premier en fait. Et j ai beau regarder un peu partout je vois pas trop comment resoudre ce pb.
 
Pour le bout de code je vois pas trop comment te mettre un truc simple en fait (le prog tient sur pas loin de 200 fichiers), mais niveau include ca donnerait ca pour le DocumentModel.cpp (un des obj qui merde au link) :
 

Code :
  1. #include "include_du_cpp"
  2. #include <sstream>
  3. #include <list>
  4. #include <iostream>


 
include_du_cpp

Code :
  1. #include include_de_h
  2. #include <string>


 
include_de_h

Code :
  1. #ifdef _cplusplus
  2. #include <wchar>
  3. #else
  4. #include <wchar.h>
  5. #endif


 
 
Je precise c un projet OpenSource et c compilable sur certaines distrib de Linux (RH 7.0 ou inferieure par exemple) via GCC et que je compile sans pb sur Windows (via VS.Net) le code.
 
Si il faut plus d'info (ce dont je ne doute pas :() a part DL toi mm le code source je vois pas trop comment te mettre ca desole.
 
 
 
En tout cas merci

Reply

Marsh Posté le 19-06-2003 à 14:51:37    

je comprends pas .. t'as un problème de déclaration et pas de ling :heink:

Reply

Marsh Posté le 19-06-2003 à 14:53:53    

Non le pb de declaration n'apparait que si je m amuse a mettre un flag en plus -D_GLIBCPP_USE_WCHAR_T (qui n'est pas present ds les makes par defaut)
 
Le pb d'origine c le pb de link, desole si induit en erreur


Message édité par VisualC++ le 19-06-2003 à 14:54:26
Reply

Marsh Posté le 19-06-2003 à 14:56:16    

file le code que j'essaie de compiler

Reply

Marsh Posté le 19-06-2003 à 15:04:37    

Jsuis pas sur que ce soit une bonne idee tu vas t emmerder car y a besoin de Xerces (et pas en version 2.x mais 1x), SpiderMonkey et Libwww, enfin les 3 y a rien de particulier pour compile mais bon quand mm tt ca pour un pb de link
 
Enfin le lien pour le DL

Reply

Marsh Posté le 19-06-2003 à 15:16:21    

apparemment le code a du mal
 
SBlogOSUtils.cpp: Dans function « int SBlogVswprintf(wchar_t*, unsigned int,
   const wchar_t*, char*) »:
SBlogOSUtils.cpp:298: error: conversion invalide de « const wchar_t* » vers «
   unsigned int »
SBlogOSUtils.cpp:298: error: cannot convert `char*' to `const wchar_t*' for
   argument `3' to `int vswprintf(wchar_t*, unsigned int, const wchar_t*,
   char*)'
 
donc je sens pas mal de problème à l'horizon. j'ai testé avec make -k, et là c'est un vrai festival

Reply

Marsh Posté le 19-06-2003 à 15:20:22    

A tient j ai pas eu celle la, et comme les erreurs sont pas les mm suivant les versions gcc / libstdc++ et OS c la galere il semble d apres la discuss list.
 
Enfin bon t embete pas non plus, je posais la question plus pour le link (genre j'ai oublie qqchose ou juste un pb de version connu).
 
 :jap:

Reply

Sujets relatifs:

Leave a Replay

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