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 6349 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 3
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 3
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 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
2 juin 2007 à 19:35
Salut,

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

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous