Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1174 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Utilisation d'une DLL C++ en VB

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Utilisation d'une DLL C++ en VB

n°793585
actsyst
Posté le 12-07-2004 à 14:37:35  profilanswer
 

Bonjour,
 
J'ai recupere un source d'encodage en Base64 afin d'en faire une dll.
Le probleme est que lorsque j'appelle une des fonctions, VB plante
le proto de la fonction C++ est :

Code :
  1. string __stdcall Base64Encode(const string &Data);


 
Voici "l'extraction" en VB :

Code :
  1. Public Declare Function Base64Encode Lib "Base64.dll" (Data As String) As String

(meme avec ByVal)
 
et l'appel :

Code :
  1. Dim Retour as String
  2. Retour = Base64Encode("ceci est un test" )


 
Auriez vous une idee d'ou cela pourrait venir svp ??
 
Merci

mood
Publicité
Posté le 12-07-2004 à 14:37:35  profilanswer
 

n°793599
mirascheat
Posté le 12-07-2004 à 14:42:41  profilanswer
 

essaye ça :

Code :
  1. Dim Retour as String
  2. Retour = String(255, vbNullChar)
  3. Retour = Base64Encode("ceci est un test" )


n°793611
actsyst
Posté le 12-07-2004 à 14:50:30  profilanswer
 

Merci pour ta reponse
La declaration de la fonction est bonne ? le parametre aussi ?
VB plante pareil, meme en rajoutant

Code :
  1. Retour = String(255, vbNullChar)


Message édité par actsyst le 12-07-2004 à 14:50:53
n°793622
mirascheat
Posté le 12-07-2004 à 14:55:30  profilanswer
 

Oulà oui j'avais pas vu, essaye avec ca :

Code :
  1. char __stdcall Base64Encode(char* Data);


Code :
  1. Public Declare Function Base64Encode Lib "Base64.dll" (ByVal Data As String) As String


 

n°793633
actsyst
Posté le 12-07-2004 à 14:59:55  profilanswer
 

Si je mets char *, ca ne marchera pas car le reste de la fonction utilise les fonctions propres au string

n°793635
mirascheat
Posté le 12-07-2004 à 15:01:58  profilanswer
 

Alors dans ce cas là je ne peux plus t'aider ...
Quand j'ai du faire une dll je me suis aidé de ce tutorial, il pourra peut être t'aider ;
www.laboratoire-microsoft.org/articles/dev/dll/1

n°793637
actsyst
Posté le 12-07-2004 à 15:03:21  profilanswer
 

J'ai utilisé le meme tutorial pour apprendre comment faire une DLL :D
Merci pour ton aide

n°793857
EagleOne33
Posté le 12-07-2004 à 17:28:27  profilanswer
 

moi j'ai voulu faire pareil que toi actsyst. Mais les string n'ont pas d'équivalence en visual basic. En tout cas c'est bcp trop compliqué pour moi. Donc j'ai passé en paramètres des char * et pour repasser en string dans mon programme en c++, je fais :  

Code :
  1. const char * __stdcall Fonction(const char * param){
  2. string sparam = param;
  3. // le reste en prenant sparam à la place de param, sparam étant une string
  4. }


 
Cette méthode marche très bien mais j'ai encore un problème.
Quand je passe une string en paramètre de ma fonction lors de l'appel dans visual basic, mon programme c++ reconnait très bien les caractères et m'affiche tout correctement. Par contre la string de réponse renvoyée sous forme char * à mon programme en visual basic m'affiche des caractères qui n'ont rien à voir. Rien ne plante mais le message retourné par mon programme en c++ fait n'importe quoi... Le code en c++ est bon et celui en visual basic aussi. Le problème vient de la compatibilité... Mais c'est bizarre que ca marche dans un sens et pas dans l'autre...  
 
Please help

n°793935
actsyst
Posté le 12-07-2004 à 19:15:54  profilanswer
 

Merci pour l'info, je v essayer ton astuce
g pas compris le commentaire que tu as mis (le reste en prenant sparam à la place de param, sparam étant une string)
quand j'aurais essaye (cad demain), je te dirais si g trouve qqc
 
++

n°794244
EagleOne33
Posté le 13-07-2004 à 09:42:27  profilanswer
 

C'était juste pour dire que le reste du corps de la fonction, tu l'écris en utilisant sparam en tant que string... c'était juste ça :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Utilisation d'une DLL C++ en VB

 

Sujets relatifs
Recherche dll pour traitement d'images (modification de dpi)VB et les DLL
Comment visualiser une DLL??[resolu]DLL
[XML] utilisation d'un JEditorPane[borland c++ buider] Utiliser une DLL.........
utilitaire pour voir les fonctions exporté et utilisé par une DLLProblème de linkage DLL sous DevCpp
Utilisation du composite report : pbUtilisation de session
Plus de sujets relatifs à : Utilisation d'une DLL C++ en VB


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR