DllImport problème de type const [Résolu]

Signaler
Messages postés
109
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
14 février 2014
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
hello
j ai un [DllImport("C://Dll//msfdll.dll")] vers une dll dans mon projet le problème c'est que DllImport() n'accepte qu'un const string et donc si je veux metter le chemin dans le web.config il est en string tout court.
j ai testé dans mon code d'aller chercher le path dans le

const string msfdllPath = System.Configuration.ConfigurationManager.AppSettings["msfdllPath"] ;

mais bien sûr ce que je retire du web.config file est un string et donc ça ne passe pas...
je ne sais pas si il y à moyen de déclarer le type const dans le fichier web.config.

est-ce que quelqu'un aurait une solution à apporter?


http://www.aspfr.com/infomsg/DLLIMPORT-PROBLEME-TYPE-CONST-1_662907.aspx

9 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
87
Voilà, je l'ai poster la source ici : http://www.csharpfr.com/codes/PINVOKE-DYNAMIQUE_36080.aspx
La méthode dont je parlais est la 3ème.

/*
coq
MVP Visual C#
*/
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
87
Salut,

Tu travailles en .Net 1.1 ou .Net 2.0 ?

/*
coq
MVP Visual C#
*/
Messages postés
109
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
14 février 2014

version 2.0
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
87
Parfait :-)

Tu vas donc pouvoir te servir de Marshal.GetDelegateForFunctionPointer en conjonction avec LoadLibrary et GetProcAddress (de l'API Win32) afin d'initialiser un delegate correspondant à la signature de la méthode exportée de la dll.

Tu pourras spécifier le chemin d'accès de la dll à l'appel de LoadLibrary.

/*
coq
MVP Visual C#
*/
Messages postés
109
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
14 février 2014

Oulà j'ai compris "Parfait :-)" ce qui me réjouis mais le reste c'est du chinois dit comme ça.
Je dois être à 200% à côté de la plaque en disant ça mais je vu que je l'ai pas précisé dans mon premier post, mais ma dll est écrite en VB et je ne peux donc pas l'intégrer via Add Reference.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
87
Euh, elle est écrite en VB : mais ça expose bien des méthodes comme les dll "normales" cette bestiole, pas du COM ?

/*
coq
MVP Visual C#
*/
Messages postés
109
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
14 février 2014

ça je sais pas te dire j ai essayé d'ajouter ma dll simplement avec l'option Add New Reference, mais ça a pas fonctionné.

quel était ton idée avec les Marshal.GetDelegateForFunctionPointer, LoadLibrary, GetProcAddress ça doit sûrement être ce qu'il me faut mais étant newbie j'ai du mal à saisir.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
87
Je te fais un exemple.

/*
coq
MVP Visual C#
*/
Messages postés
109
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
14 février 2014

ok