Declaration d'une dll

Résolu
survcopt Messages postés 224 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 13 mai 2022 - 26 mai 2007 à 17:55
survcopt Messages postés 224 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 13 mai 2022 - 4 juin 2007 à 10:26
Toujours des soucis avec mes dll , mais je n'ai jamais été aussi proche du but
bref j'ai une dll décalrée comme ça en C
GM_DLL_EXPORTED GM_Error_t32 __stdcall GM_SelectProjection
(
GM_Projection_t* aSelProj, // out: projection selected by user
const GM_Projection_t* aInitProj // in: initial projection to use (NULL for default)
);

GM_DLL_EXPORTED est déclaré ainsi #define GM_DLL_EXPORTED __declspec(dllimport)
je ne comprends pas ce que ça veut dire
__stdcall je sais que ça a un rapport avec Win32 API mais je ne sais pas comment l'initialiser

En c# je pense que la déclaration doit plus ou moins ressembler à ça mais je ne suis pas sur de plus je n'arrive pas à l'appeler à partir de mon code
[DllImport(DLLFileName, EntryPoint = "GM_SelectProjection")]
public static extern GM_Error_t32 GM_SelectProjection(ref GM_Projection_t aSelProj, ref GM_Projection_t aInitProj);

P.S. : plus je vous mes questions plus je me dis que le chemin va être long ... très long.

www.survey-copter.com

7 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
4 juin 2007 à 09:05
Désolé, j'avais pas vu ton message..

[DllImport(DLLFileName, EntryPoint = "GM_GetProjection ")] // <- T'as mis un un espace dans le nom !!
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
26 mai 2007 à 19:01
__stdcall c'est la convention d'appel par défaut donc rien à rajouter, mais je comprends pas __declspec( dllimport ) ça devrait être __declspec( dllexport ).
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
26 mai 2007 à 19:15
Cherche l'outil DUMPBIN dans Visual Studio ou dans le SDK de Windows et fait "dumpbin -exports" pour voir les fonctions exportées de ta DLL parce que si elle n'est pas exportée tu ne pourras pas l'appeller depuis ton code C#.
0
survcopt Messages postés 224 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 13 mai 2022 3
26 mai 2007 à 19:50
Bon ben dumpbin ne veut pas s'executer chez moi , sinon est-ce que ma declaration de fonction est bonne ?
[DllImport(DLLFileName, EntryPoint = "GM_SelectProjection")]
        public static extern GM_Error_t32 GM_SelectProjection(ref GM_Projection_t aSelProj, ref GM_Projection_t aInitProj);

et comment je l'appele :
GlobalMapperDLL.GM_SelectProjection(?, ?)
Je n'ai pas compris comment passer les paramètres
merci

www.survey-copter.com
0

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

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
26 mai 2007 à 20:51
Lance le depuis la ligne de commande.

GlobalMapperDLL.GM_SelectProjection( ref maStruct1, ref maStruct2 );
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 à 13:06
ca à l'air de marcher mais j'ai un autre souci avec une autre fonction de cette dll
lors de l'appel j'ai un erreur du type
"Impossible de trouver le point d'entrée 'GM_GetProjection ' dans la DLL 'C:\Global.Mapper\GlobalMapperSDK\bin\GlobalMapperInterface.dll'."

elle est déclarée comme ca
[DllImport(DLLFileName, EntryPoint = "GM_GetProjection ")]
        public static extern GM_Error_t32 GM_GetProjection(out GM_Projection_t aProj);

appelé comme ca
GM_Projection_t ProjectionSysteme;
GlobalMapperDLL.GM_GetProjection(out ProjectionSysteme);

et dans dumpbin que j'ai trouvé dans les outils en commande dos l'entrée est bien déclarée
231   E6 000EF170 GM_GetProjection

En C++ elle est appelée comme ca
GM_Projection_t theCurProj;
GM_Error_t32 theErr = GM_GetProjection( &theCurProj );

Je pense qu'une fois tout mes prb résolu , je ferai un petit post sur les appels en c# d'un dll c++ car moi je galère et je ne dois pas être le seul

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
4 juin 2007 à 10:26
J'ai vu aussi pour l'espace Merci

www.survey-copter.com
0
Rejoignez-nous