Rendre un programme C++ windows compatible sous Linux [Résolu]

Signaler
Messages postés
16
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
19 mai 2009
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
Bonjour à tous

Voila mon probléme, j'ai ce code dans un programme:
int __MW_DLL__ MW_SetClock()
{
  int ret;
  struct date d;
  struct time t;


  MW_ControlT* mwc = MW_ControlT::getInstance();


  getdate(&d);
  gettime(&t);


  return mwc->SetClock(d.da_year,d.da_mon,d.da_day,
                       t.ti_hour,t.ti_min,t.ti_sec,
                       m_Address);
}
Mais je doit rendre mon programme compatible sous linux et quand je compile ce fichier j'obtiens les erreurs suivantes:
$ g++ -c MWControllerDLL.cpp -o MWControllerDLL.o
MWControllerDLL.cpp: In function `int MW_SetClock()':
MWControllerDLL.cpp:179: error: aggregate `date d' has incomplete type and canno
t be defined
MWControllerDLL.cpp:180: error: aggregate `time t' has incomplete type and canno
t be defined
MWControllerDLL.cpp:184: error: `getdate' undeclared (first use this function)
MWControllerDLL.cpp:184: error: (Each undeclared identifier is reported only onc
e for each function it appears in.)
MWControllerDLL.cpp:185: error: `gettime' undeclared (first use this function)

Comment rendre ce programme compatible linux?

Merci pour votre temps!

9 réponses

Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
pour ton erreur de cast, ca depend des compilos, ils mettent ces erreurs en error ou warning. ex :VC6 laisse aussi passer cette erreur de cast, pas VC++.NET

pour le reste, sur date time getdate et gettime sont des fonctions des librairies Borland. Bah là, pas le choix, code non portable, à toi de faire joujou avec les #ifdef WIN32 pour séparer les codes spécifiques windows et linux.
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
pour moi gettime est une fonction Linux, ca n'existe pas sous windows.
tu n'as pas le choix, c'est 2 codes différents
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
getdate et gettime ca existe sous Windows ?????
idem pour les structs !!!

tu peux me montrer des include parce que là, j'ai un doute.
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
Ah oui !! j'oublais tu es sous cygwin, je crois.

j'ai rien dit pour les fonctions, par contre les struct, j'ai un doute. Pourquoi c'est pas :
struct tm t; ?
Messages postés
16
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
19 mai 2009

Ba ce programme là il marche sous borland C++ builder sur windows!!
Et je connais pas les fonctions qu'il faut utiliser sous linux comme "tm t"
J'ai trouvé quelques infos sur le net mais j'ai pas reussi a faire le même programme....
Messages postés
16
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
19 mai 2009

il y a un autre truc bizarre aussi...je peu compiler et executer tout mon programme sans aucune erreur sous Borland C++ builder mais quand j'essaye de compiler avec cygwin (ou même DevC++) j'ai l'erreur:
MWControl.cpp:418: error: invalid conversion from `unsigned char*' to `const char*'
Je ne comprend pas pourquoi Builder ne prend pas en compte cette erreur(qui me pose un probléme pour la portabilité aussi....)

Merci
Messages postés
16
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
19 mai 2009

Ralala je peux plus le voir ce programme..
Connais tu les fonctions C++ de linux equivalent pour gettime...?

Merci
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
Tu peux aussi tenter d'utiliser Qt-Core, ou Boost (notamment Boost Date-time), qui fournissent des fonctions et classes compatibles tout OS (ils se chargent de toute la compabilité).
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
Salut,

Pour les fonctions vraiment standards, regarder ce site.
Microsoft propose un sacré paquet de fonctions de la librairie standard C (Ou dérivées...), parfois préfixées par un underscore. Fonctions temps ici.
Et pour linux, les fonctions sont détaillées dans les pages du man. En ce qui concerne la programmation, on utilise surtout le man 2 (Fonctions systèmes, plutôt orienté OS. Exemple : time) et le man 3 (Fonctions de la lib C, de plus haut niveau que les fonctions systèmes. Exemple : difftime.).

C++ Builder, je ne sais pas exactement ce qu'il propose, mais ils étaient de réputation plus proche de la norme que Visual C++ à une époque.

Soit dit en passant la "norme" en C et en C++, POSIX ou autre, c'est une belle utopie... M'enfin ça marchote.