Dll avec le meme nom de function interne

Résolu
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 - 31 mai 2007 à 13:42
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 - 31 mai 2007 à 14:29
Bonjour à tous

Voila, j'utilise des DLL standard non-ActiveX créée avec un autre laguage.
J'arrive bien a les faire marcher mais le probleme c'est qu'a l'interieur de chaque DLL il y a parfois le meme nom de fonction.

Quand je declare la fonction, je me retrouve donc avec :

Private Declare Function Cryptage Lib "P1M1.dll" (ByVal a As String, ByVal a As String) As Long
Private Declare Function Cryptage Lib "N3CAA.dll" (ByVal a As String, ByVal a As String) As Long

Et la bien sur j'ai un message d'erreur du style "Nom ambigu détecté".
Y a t'il un moyen d'eviter cela ????

Merci
Bonne journée

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
31 mai 2007 à 13:47
utilise les alias :

Private Declare Function Cryptage_P1M1 Lib "P1M1.dll" Alias Cryptage (ByVal a As String, ByVal a As String) As Long
Private Declare Function Cryptage_N3CAA Lib "N3CAA.dll" Alias Cryptage (ByVal a As String, ByVal a As String) As Long

Et dans tn code ensuite, tu utilise Cryptage_P1M1 et Cryptage_N3CAA

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
31 mai 2007 à 14:13
Bonjour casy

Je te remercie beaucoup de ta reponse, et de la rapidité a laquelle tu me l'a donné
J'aurais une autre question pour sensiblement le meme probleme.

Est il possible de passer une fonction en argument d'une autre fonction ?

Private Declare Function CryptageP1M1 Lib "P1M1.dll" Alias "Cryptage" (ByVal a As String, ByVal a As String) As Long
Private Declare Function CryptageN3CAA Lib "N3CAA.dll" Alias "Cryptage" (ByVal a As String, ByVal a As String) As Long

Function CoderAlpha(Codage, PhraseACoder)
 
 Dim ChaineDll As String * 400
 Dim AdresseChaine As Long
 ChDrive (Left(App.Path, 1))
 ChDir App.Path
 
 If Dir(App.Path + "" + Codage + ".dll") <> "" Then
  AdresseChaine = lstrcpy(ChaineDll, Cryptage(Codage, PhraseACoder))
  CoderAlpha = ChaineDll
 Else
  MsgBox "La Dll " + Codage + ".Dll" + " est absente de " + CurDir
 End If
 
End Function

Car en fait le probleme c'est Cryptage(Codage, PhraseACoder)
Comment lui transmetre une fois CryptageN3CAA(Codage, PhraseACoder)
, une fois CryptageP1M1(Codage, PhraseACoder)

Je te remercie beaucoup de ton aide
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
31 mai 2007 à 14:19
Ce que tu envoies comme paramètre n'est pas (et ne peut être) une fonction... C'est la valeur retournée par la fonction utilisée ! donc pas de problème !
Par exemple : Cryptage(Codage, PhraseACoder) n'est pas la fonction Cryptage mais la valeur qu'elle retourne quand on l'utilise en lui passant les paramètres Codage et PhraseACoder
0
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
31 mai 2007 à 14:29
Je te remercie de ta reponse.
Mais le probleme c'est que j'ai fait cette procedure expres pour encapsuler cette fonction qui appelle la DLL, car vu que je ne la declare pas dans la BDR il faut absolument qu'elle soit dans le repertoire de l'appli.
Je force donc le chemin courant dans ce repertoire autrement il me dit qu'il ne trouve pas l'acces a la DLL.


Donc je voudrais pouvoir appeler une fois CryptageN3CAA(Codage, PhraseACoder)
et une fois CryptageP1M1(Codage, PhraseACoder) selon mon choix.
Mais que faut il mettre a cette ligne
AdresseChaine = lstrcpy(ChaineDll, Cryptage(Codage, PhraseACoder))
puisque ce n'est pas la meme fonction qui est appelée a chaque fois

Merci de votre aide
0
Rejoignez-nous