erreur de librairie time.h [C++/Qt] - C++ - Programmation
Marsh Posté le 19-01-2005 à 11:40:40
Tu includes "time.h" ou bien "sys/time.h" ?
Et tu inclues "sys/types.h" avant ou pas ?
Marsh Posté le 19-01-2005 à 11:54:37
Lam's a écrit : Tu includes "time.h" ou bien "sys/time.h" ? |
En fait j'inclue rien du tout, c juste une histoire de dépendance...
In file included from /usr/include/c++/3.3/i486-linux/bits/gthr-default.h:37,
from /usr/include/c++/3.3/i486-linux/bits/gthr.h:98,
from /usr/include/c++/3.3/i486-linux/bits/c++io.h:37,
from /usr/include/c++/3.3/bits/fpos.h:44,
from /usr/include/c++/3.3/bits/char_traits.h:46,
from /usr/include/c++/3.3/string:47,
from /usr/share/qt333/include/qstring.h:56,
from /usr/share/qt333/include/qwindowdefs.h:44,
from /usr/share/qt333/include/qwidget.h:42,
from /usr/share/qt333/include/qframe.h:42,
from /usr/share/qt333/include/qlineedit.h:47,
from acldapconfigdialog.cpp:41:
et gthr-default.h appel pthread.h qui inclue #include <time.h>
existe t'il un moyen de vérifier si il utilise bien le /usr/include/time.h ??? et pas le /sys/time.h?
alalaaa, je ne vais jamais trouver ...
Marsh Posté le 19-01-2005 à 12:05:13
Et ben dans ton code (dans acldapconfigdialog), essaye d'include <sys/types.h> et aussi <sys/time.h> si ça ne marche pas. Si ça ne marche toujours pas, inclus "time.h" en premier, avant tout autre chose.
Apparemment, le support du multi-threading dans les allocateurs de la lib std++ est en conflit avec le code de QT. Probablement parce que QT inclut des fichiers systèmes qui ne sont pas les même que ceux inclus par libstdc++ (l'éternel conflit entre time.h et sys/time.h)
Marsh Posté le 19-01-2005 à 12:11:57
Lam's a écrit : Et ben dans ton code (dans acldapconfigdialog), essaye d'include <sys/types.h> et aussi <sys/time.h> si ça ne marche pas. Si ça ne marche toujours pas, inclus "time.h" en premier, avant tout autre chose. |
Merci pour ta rapidité de réponse, j'avais déja essayé mais sans succès. Je pense aussi que le multi-threading (std) pose problème...
En fait, je voudrais utiliser l'API ldap C++ fournit dans Openldap dans le projet "aethera". Lorsque je fais un projet indépendant C++/Qt, je peu utiliser l'api sans problème...
Marsh Posté le 19-01-2005 à 12:24:43
Bon, bah fais péter:
- la ligne de commande qui est exécutée pour compiler ce fichier,
- ainsi que la liste de tes includes dans le fichier cpp,
- et si c'est pas trop gros, le résultat de
g++ -M acldapconfigdialog.cpp (ou -MM)
Marsh Posté le 19-01-2005 à 14:13:03
Lam's a écrit : Bon, bah fais péter: |
- la ligne de commande qui est exécutée pour compiler ce fichier,:
g++ -c -pipe -Wall -W -O2 -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -I/usr/share/qt333/mkspecs/default -I. -I/usr/local/include/tkcbase -I/usr/local/include/tkcssl -I. -I../.. -I../../.. -I../../clientskel -I../../aethera -I../../../src -I../../tino -I../../plugins/kommailplugin -I/usr/share/qt333/include -I.moc/ -o .obj/acldapconfigdialog.o acldapconfigdialog.cpp
ainsi que la liste de tes includes dans le fichier cpp :
//librairie qt:
#include <qlineedit.h>
#include <qcheckbox.h>
#include <qspinbox.h>
#include <qtabwidget.h>
#include <qpushbutton.h>
#include <qbuttongroup.h>
//librairie pour integrer d'autre interface dans celle ci
#include "acldapgeneralconfigwidget2.h"
#include "acldapsecurityconfigwidget.h"
#include <acldapconfigdialog.h>
#include <accountinfoconfigwidget.h>
#include <acldapscandialog.h>
//using namespace std; //ne change rien
le résultat de "g++ -M acldapconfigdialog.cpp (ou -MM)":
g++ -M acldapconfigdialog.cpp -->
acldapconfigdialog.cpp:41:23: qlineedit.h: No such file or directory
acldapconfigdialog.cpp:42:23: qcheckbox.h: No such file or directory
acldapconfigdialog.cpp:43:22: qspinbox.h: No such file or directory
acldapconfigdialog.cpp:44:24: qtabwidget.h: No such file or directory
acldapconfigdialog.cpp:45:25: qpushbutton.h: No such file or directory
acldapconfigdialog.cpp:46:26: qbuttongroup.h: No such file or directory
In file included from acldapconfigdialog.cpp:50:
acldapgeneralconfigwidget2.h:13:22: qvariant.h: No such file or directory
acldapgeneralconfigwidget2.h:14:21: qwidget.h: No such file or directory
In file included from acldapconfigdialog.cpp:51:
acldapsecurityconfigwidget.h:13:22: qvariant.h: No such file or directory
acldapsecurityconfigwidget.h:14:21: qwidget.h: No such file or directory
acldapconfigdialog.cpp:53:32: acldapconfigdialog.h: No such file or directory
acldapconfigdialog.cpp:54:37: accountinfoconfigwidget.h: No such file or directory
acldapconfigdialog.cpp:55:30: acldapscandialog.h: No such file or directory
g++ -MM acldapconfigdialog.cpp -->
acldapconfigdialog.o: acldapconfigdialog.cpp acldapgeneralconfigwidget2.h \
acldapsecurityconfigwidget.h
Mais en fait je ne comprend plus, même en supprimant toutes les traces de cette API , en revenant à mon prog de départ en fait, il me sort la même erreur...
franchement merci pour ton aide c super cool
Marsh Posté le 19-01-2005 à 16:33:05
Bon, déjà, je vois pas les options qui indiquent à gcc qu'il va compiler du code multithread.
Essaye donc d'ajouter "-pthread" en option de compil.
D'autre part, qu'est-ce qui se passe (quels sont les messages d'erreur) si tu inclues ça en tout premier:
#include <ctime>
Pour le reste, faudra attendre que des linuxiens passent par là ce soir...
Marsh Posté le 19-01-2005 à 16:55:20
Lam's a écrit : Bon, déjà, je vois pas les options qui indiquent à gcc qu'il va compiler du code multithread. |
Toujours rien ...
J'ai bien ajouté -pthread et la lib ctime mais aucun signe de mieu sniiiif.
L'erreur 1° de pthread (/usr/include/pthread.h l.651):
Code :
|
L'erreur 2° de ctime (/usr/include/c++/3.3/ctime l.68->78)
Code :
|
Mais bon, normalement on a quasi tous les mêmes lol.
J'ai installer la version libstdc++6 au cas ou ca soit le pb...
J'espère que les linuxiens expérimentés vont trouvés mon pb, mais j'en doute pas
merci bcp
Marsh Posté le 24-01-2005 à 09:52:34
C'est bon j'ai trouver ma première erreur en faisant du trie dans mes librairies... Il y avait une librairie rebelle héhé
Merci Lam's pour ton aide
Marsh Posté le 19-01-2005 à 11:19:58
Lut all,
j'ai un problème de librairie, et plus précisement "time.h".
je suis sur débian, mon gcc :
"Reading specs from /usr/lib/gcc-lib/i486-linux/3.3.4/specs
Configured with: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --enable-__cxa_atexit --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc i486-linux
Thread model: posix
gcc version 3.3.4 (Debian 1:3.3.4-13)"
Mon erreur de compilation:
"/usr/include/pthread.h:651: error: type specifier omitted for parameter `clockid_t'
/usr/include/pthread.h:651: error: parse error before `*' token
/usr/include/c++/3.3/ctime:66: error: `clock_t' not declared
/usr/include/c++/3.3/ctime:67: error: `time_t' not declared
/usr/include/c++/3.3/ctime:68: error: `tm' not declared
..."
Mon makefile :
(...)
unix {
LIBS += -L../../aethera -L../../tino -L/usr/local/lib -laethera -lkore -ltino -ltkcbase -lldap -llber
contactsplugin.path = $$AETHERA_DIR/plugins/
contactsplugin.files = lib*.so.1.0.0
INSTALLS += contactsplugin
(...)
Je sais très bien que je ne vais pas pouvoir être assez précis, mais par quoi puis-je commencer à vérifier? est ce que quelqu'un à déja eu ce genre de pb?
Mais vraiment toutes les idées sont la bienvenue, je suis bloqué depuis quelques jours et j'en ai maaaarre ...
merci à tous