Utilisation d'une DLL en C avec VB.net

Signaler
Messages postés
7
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
8 avril 2009
-
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
-
->Salut à tous, j'ai une DLL qui demande le nom d'un fichier à l'entrée et le nom d'un fichier pour la sortie. Cette DLL fait le tri croissant numériue d'opération sur une CNC en se basant sur les coordonnées en x et en y de chacune des opération. Je doit faire cette opération pour un programme en VB et je me demande ce que je fait de pas correct! Pour le programme en VB, j'avait inscrit la commande suivante dans le module:
->Declare Function lecture Lib "C:\...\triage.dll" (ByRef fichierin As String, ByRef fichierout As String) End Module
->Puis, je fait appel à cette dernière de la façon suivante dans un form:
->Dim test1 As String test1 cheminacces & "temp.for" Dim test2 As String test2 cheminacces & codeclient lecture(test1, test2)
->Finalement, voici l'entête de cette DLL (en C):
->void __stdcall lecture(char *nomficin,char *nomficout)
->Le problème est assurément pas la DLL puisqu'elle fonctionnait dans un programme en C. Si vous voyez une erreur ou si vous avez une suggestion quelconque d'une fonction de tri qui existe déjà!!! Merci, Padp

4 réponses

Messages postés
403
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
7 août 2020
1
Bonjour,

Aie!! mes n'oeils!!

Quel est l'erreur?

Bonne Prog
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Généralement les chaines de caractères sont passées par valeur à une DLL

Essaye avec ceci :
Declare Function lecture Lib "C:\...\triage.dll" (ByVal fichierin As String, ByVal fichierout As String)

Une variable String en VB est en fait un pointeur déguisé sur une zone mémoire contenant la chaine réelle. D'où le passage par valeur.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Messages postés
7
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
8 avril 2009

OK! Merci pour la précision sur les string en VB, je ne le savais pas!
Toutefois, j'ai essayer et il arrive alors le message d'erreur suivant:

{"Restriction PInvoke : impossible de retourner des variants."}

Pourtant, ma DLL ne tente pas de retourner de valeur???

Pascal
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Ah ben si, tu l'as déclarée comme Function.
En C effectivement elle ne retourne rien, il faut donc la déclarée comme Sub

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #