Dll avec le meme nom de function interne

Résolu
Signaler
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
-
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
-
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

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
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
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
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