Time_t avec dll en C++ [Résolu]

Signaler
Messages postés
223
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
3 juin 2019
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
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

Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
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());
Messages postés
223
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
3 juin 2019
1
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
Messages postés
223
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
3 juin 2019
1
Désolé je viens de comprendre ton code merci ca marche...

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

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.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Salut,

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

/*
coq
MVP Visual C#
CoqBlog
*/