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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB .NET]Attaquer une DLL C++ et lui passer et récupérer des Strings

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB .NET]Attaquer une DLL C++ et lui passer et récupérer des Strings

n°1172966
Swim
Posté le 09-08-2005 à 10:41:38  profilanswer
 

Bonjour à tous,
 
Ca fait maintenant quelques jours que j'essaye de résoudre un problème et malgré toute ma bonne volonté :whistle: j'ai toujours pas trouvé...
 
Je voux explique le bazar.
 
Un boite dont je suis client m'a fourni une DLL que je dois mettre en place sur un projet .NET. Cette DLL est dévelopée en C++ et voici la fonction qu'elle contient qui m'intéresse:
 

Code :
  1. void mafonction(
  2. long * param_un,
  3. long param_deux,
  4. unsigned char * param_trois,
  5. unsigned char * param_quatre)


 
Les paramètres 1 et 4 sont des paramètres de sortie et les 2 et 3 sont des entrées.
 
J'ai déjà testé cette fonction de la DLL en C avec le .lib et le .h fourni avec la DLL, tout fonctionne nickel.
 
Pour le VB .NET, je n'arrive pas à avoir de résultats en retour, et je ne sais pas non plus si les entrées lui sont bien passées...
 
Voici la déclaration de la fonction que j'ai faite dans le programme:
 

Code :
  1. Private Declare Sub mafonction Lib "madll" _
  2. (ByVal param_un As Long, _
  3. ByVal param_deux As Long, _
  4. ByVal param_trois As String, _
  5. ByVal param_quatre As String)


 
Avec ensuite un appel en  
 

Code :
  1. Call mafonction(a,b,c,d)


 
J'ai surement fait des erreurs dans la conversion de types, notamment le long * -> Long et j'ai lu quelquepart que les String à passer en paramètre d'une DLL devaient être de taille fixe, ce qui n'est plus possible en VB .NET...
 
Le programme compile mais les résultats ne sont pas au rendez-vous...
 
Je débute complètement dans l'utilisation des DLL, merci d'éclairer ma lanterne si vous en avez la possibilité !

mood
Publicité
Posté le 09-08-2005 à 10:41:38  profilanswer
 

n°1173588
knakes
Posté le 09-08-2005 à 21:07:04  profilanswer
 

http://vbfrance.com/code.aspx?id=7093
 
ca pourrait peut être t'aider ?


---------------
now : do nothing
n°1173727
theshockwa​ve
I work at a firm named Koslow
Posté le 10-08-2005 à 10:19:10  profilanswer
 

Il doit bien y avoir une classe genre Marshal en VB.Net pour convertir tes données "managed" en données "natives" et vice versa.

n°1173849
Swim
Posté le 10-08-2005 à 13:12:43  profilanswer
 

@knakes: bof, je vois pas trop ce qui pourrait m'intéresser là-dedans :p Ca parle surtout d'interfaces graphiques gerées en XML...
 
@theShOcKwAvE: j'ai essayé avec le type StringBuilder, j'obtines le même résultat.
 
Merci quand même de vos idées !


Message édité par Swim le 10-08-2005 à 13:30:00
n°1173906
HelloWorld
Salut tout le monde!
Posté le 10-08-2005 à 14:28:23  profilanswer
 

Le plus simple à mon avis c'est de te faire un petit wrapper Managed C++. C'est fait pour ça.
Ca donnerait un truc du genre:

Code :
  1. public __gc class mon_wrapper
  2. {
  3. public:
  4.     void mafonction(
  5.         long & param_un,
  6.         long param_deux,
  7.         System::Byte param_trois __gc [],
  8.         System::Byte param_quatre __gc []);
  9. };


sauf que ça doit plus complexe, ça dépend de comment sont utilisés les arguments.
Regarde du côté de System::Runtime::InteropServices.
http://msdn.microsoft.com/library/ [...] stions.asp


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite

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

  [VB .NET]Attaquer une DLL C++ et lui passer et récupérer des Strings

 

Sujets relatifs
Aide sur la commande NET SENDPasser des images en background
Erreur ASP.Net de débutant[RESOLU] Récupérer résultat d'1 requête SQL dans 1 script bourne shell
Récupérer le nom de session windows du client dans un réseau local[MySQL]Récupérer un seul enregistrement
[Résolu] Récupérer valeur oui/nonInitiation à ASP.Net
VBA excel pb pour récupérer le chemin d'enregistrement et le réinjectAccess et ADO.NET
Plus de sujets relatifs à : [VB .NET]Attaquer une DLL C++ et lui passer et récupérer des Strings


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