Declaration d'une dll [Résolu]

survcopt 221 Messages postés mardi 27 mai 2003Date d'inscription 12 juillet 2012 Dernière intervention - 26 mai 2007 à 17:55 - Dernière réponse : survcopt 221 Messages postés mardi 27 mai 2003Date d'inscription 12 juillet 2012 Dernière intervention
- 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
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 4 juin 2007 à 09:05
3
Merci
Désolé, j'avais pas vu ton message..

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

Merci Lutinore 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de Lutinore
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 26 mai 2007 à 19:01
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
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 26 mai 2007 à 19:15
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
survcopt 221 Messages postés mardi 27 mai 2003Date d'inscription 12 juillet 2012 Dernière intervention - 26 mai 2007 à 19:50
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
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 26 mai 2007 à 20:51
0
Merci
Lance le depuis la ligne de commande.

GlobalMapperDLL.GM_SelectProjection( ref maStruct1, ref maStruct2 );
Commenter la réponse de Lutinore
survcopt 221 Messages postés mardi 27 mai 2003Date d'inscription 12 juillet 2012 Dernière intervention - 1 juin 2007 à 13:06
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
survcopt 221 Messages postés mardi 27 mai 2003Date d'inscription 12 juillet 2012 Dernière intervention - 4 juin 2007 à 10:26
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.