Declaration d'une dll [Résolu]

Messages postés
221
Date d'inscription
mardi 27 mai 2003
Dernière intervention
12 juillet 2012
- - Dernière réponse : survcopt
Messages postés
221
Date d'inscription
mardi 27 mai 2003
Dernière intervention
12 juillet 2012
- 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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
3
Merci
Désolé, j'avais pas vu ton message..

[DllImport(DLLFileName, EntryPoint = "GM_GetProjection ")] // <- T'as mis un un espace dans le nom !!

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 95 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
__stdcall c'est la convention d'appel par défaut donc rien à rajouter, mais je comprends pas __declspec( dllimport ) ça devrait être __declspec( dllexport ).
Commenter la réponse de Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
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#.
Commenter la réponse de Lutinore
Messages postés
221
Date d'inscription
mardi 27 mai 2003
Dernière intervention
12 juillet 2012
0
Merci
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
Commenter la réponse de survcopt
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
Lance le depuis la ligne de commande.

GlobalMapperDLL.GM_SelectProjection( ref maStruct1, ref maStruct2 );
Commenter la réponse de Lutinore
Messages postés
221
Date d'inscription
mardi 27 mai 2003
Dernière intervention
12 juillet 2012
0
Merci
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
Commenter la réponse de survcopt
Messages postés
221
Date d'inscription
mardi 27 mai 2003
Dernière intervention
12 juillet 2012
0
Merci
J'ai vu aussi pour l'espace Merci

www.survey-copter.com
Commenter la réponse de survcopt

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.