Time_t avec dll en C++

Résolu
survcopt
Messages postés
224
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
13 mai 2022
- 1 juin 2007 à 11:19
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
- 2 juin 2007 à 19:35
Toujours moi avec ma dll et ces multiples fonctions en C
elle se declare comme ca en C , cette fonction me renvoie une date au format time_t je suppose que c'est le format DateTime
GM_DLL_EXPORTED time_t __stdcall GM_GetSDKBuildDate
(
void
)

Je l'ai déclaré comme ca
[DllImport(DLLFileName, EntryPoint = "GM_GetSDKBuildDate")]
public static extern DateTime GM_GetSDKBuildDate();

et appellé comme ca

DateTime datebuild = GlobalMapperDLL.GM_GetSDKBuildDate();

et j'ai une jolie erreur
"La signature du type de cette méthode n'est pas compatible avec PInvoke."
J'en conclu que time_t != DateTime
Y a t il une idée sur le forum ?
Merci

www.survey-copter.com

5 réponses

cs_Willi
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
1 juin 2007 à 12:34
Bonjour,
time_t est par défaut un entier sur 8 octets (long en c#)
DateTime datebuild = new DateTime(1970,1,1).AddSeconds(GlobalMapperDLL.GM_GetSDKBuildDate());
3
survcopt
Messages postés
224
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
13 mai 2022
1
1 juin 2007 à 14:03
comme ceci ca fonctionne
long datebuild = GlobalMapperDLL.GM_GetSDKBuildDate();

Maintenant j'ai une probleme de conversion
J'ai un chiffre : 1177801200 et je sais qu'il correspond à la date
04/07/2007 ,
j'ai compris qu'il s'agit d'un compteur qui commence le
01/01/1900 .
Existe-t-il une fonction qui effectue la conversion :
1177801200 => 04/07/2007

Merci

www.survey-copter.com
0
survcopt
Messages postés
224
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
13 mai 2022
1
1 juin 2007 à 14:18
Désolé je viens de comprendre ton code merci ca marche...

www.survey-copter.com
0
NairodDorian
Messages postés
130
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
18 août 2008

2 juin 2007 à 19:21
Bonjour,

Il me semble que time_t est defini comme ceci en C/C++ : typedef long time_t; (un long vaut 4 octets avec MSC++)

Donc son equivalent C# est un int.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
2 juin 2007 à 19:35
Salut,

En fait, ça dépend : Breaking Changes (CRT)

/*
coq
MVP Visual C#
CoqBlog
*/
0