survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 2022
-
26 mai 2007 à 17:55
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 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.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 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 ).
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 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#.
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 20223 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 20223 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