begin process at 2012 02 14 21:09:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

Réseau et Internet

 > 

utilise une fonction c++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

utilise une fonction c++

mercredi 23 février 2005 à 22:47:24 | utilise une fonction c++

amiro


j'utilise cette fonction dans une DLL pour l'appeler en vb
cette fonction fonctionne correctement en vc.
void liste_adap(char * device_name)
 {
       /* Vars */
  
       pcap_if_t *alldevs;
       pcap_if_t *d;
       char error[PCAP_ERRBUF_SIZE];
       /* Trouve toutes les interfaces */
       pcap_findalldevs(&alldevs, error);
     
         for(d=alldevs;d!=NULL;d=d->next)
   {
     strcpy(device_name,d->name);
   }
  
 }
le probléme c'est que visual basic se plante lorsque je fais l'appel à la fonction:

Private Declare Sub liste_adap Lib "d:\test.dll" (ByVal adap_name As String)


Private Sub Command1_Click()
  Dim name_adap As String
  Call liste_adap(name_adap)
End Sub
comment puis résoudre ce probléme:
j'ai d'autre fonction qui retourne des types simples int,float mais qui fonctionne correctement
ezzi

mercredi 23 février 2005 à 22:57:59 | Re : utilise une fonction c++

casy

Membre Club
As-tu essayé :

Private Declare Sub liste_adap Lib "d:\test.dll" (ByRef adap_name As String)


Les chaines de caractères entre VB et C c'est pas toujours évidents, j'ai régulièrement moi aussi des problèmes.




Si le cerveau était assez simple pour que nous puissions le comprendre,
nous serions assez bête pour ne pas le comprendre malgré tout.

jeudi 24 février 2005 à 00:14:32 | Re : utilise une fonction c++

Gobillot

aucune dll ne peut changer la taille d'une chaîne passée par VB

Daniel
jeudi 24 février 2005 à 07:55:24 | Re : utilise une fonction c++

casy

Membre Club
Réponse acceptée !
Exact, j'avais pas vu

en vb il faut faire
Dim name_adap As String * xxx   'avec xxx = la longueur maxi de ta chaine

ou tu peut faire aussi dans le code avant l'appel de la dll : name_adap = space(xxx)

sinon en C quand tu remplis ta chaine, en fait tu écrase les autres variables stocké en mémoire après cette chaine, avec en retour, au mieux des valeurs érronnées et au pire un magnifique BSOD



Si le cerveau était assez simple pour que nous puissions le comprendre,
nous serions assez bête pour ne pas le comprendre malgré tout.

jeudi 24 février 2005 à 09:00:13 | Re : utilise une fonction c++

amiro

Merci cassy,votre deuxiéme proposition a résolu mon probléme

ezzi
jeudi 24 février 2005 à 09:08:17 | Re : utilise une fonction c++

amiro

mais je ne vois pas l'utilité de la fonction Space car la programme fonctionne sans cette fonction

ezzi
jeudi 24 février 2005 à 09:37:27 | Re : utilise une fonction c++

casy

Membre Club

Il faut que ta chaine soit dimentionner (en gros que l'espace en mémoire soit réservé) avant l'appel de ta fonction dll.

Alors soit tu le fait lors de la déclaration, tel que je te l'ai indiqué, soit tu garde ta déclaration comme tu l'avait fait au départ et dans ce cas il faut dimentionner ta chaine en cours d'exécution.
Dans ce cas la fonction space(xxx) en ecrivant xxx espace dans ta chaine, la dimentionne automatiquement.

Tu utilise une deux solutions, les deux à la fois ce n'est pas utile.

La seconde (avec space) peut éventuellement etre utile si tu veux donner des tailles différentes à ta chaine.



Si le cerveau était assez simple pour que nous puissions le comprendre,
nous serions assez bête pour ne pas le comprendre malgré tout.

jeudi 24 février 2005 à 09:53:39 | Re : utilise une fonction c++

amiro

est ce que tu peux me donner un exemple d'une fonction qui retourne une structure et comment peut on l'appeler à partir de vb car je n'arrive pas à le faire

ezzi
jeudi 24 février 2005 à 10:19:54 | Re : utilise une fonction c++

casy

Membre Club
Pour VB :
déclarations :
Public Type ST_TEST
    Var1 As Long
    Var2 As Single
    Var3 As Single
    Var4 As Long
    Var5 As Long
End Type


Public TaStruc As ST_TEST

Public Declare Sub TaFonctionDll Lib "TaDll.DLL" (ByRef TaStruc As ST_TEST)

Appel :
Call TaFonctionDll(TaStruc)

Pour la Dll :
déclaration :
typedef struct
    {
    int var_1;
    float var_2;
    float var_3;
    int var_4;
    int var_5;
    }ST_C_TEST;


Utilisation :
void TaFonctionDll(ST_C_TEST *pt)
{
    ........
    pt->var_1 = 1;       
    pt->var_2 = 2;       
    ........
}







Si le cerveau était assez simple pour que nous puissions le comprendre,
nous serions assez bête pour ne pas le comprendre malgré tout.

jeudi 24 février 2005 à 11:45:45 | Re : utilise une fonction c++

1 2

Cette discussion est classée dans : fonction, utilise, name, pcap, adap


Répondre à ce message

Sujets en rapport avec ce message

Savoir si un objet est Nothing [ par Talere ] Bonjour,J'utilise la fonction Range.find d'Excel et lorsque qu'aucune cellule est trouvée, la fonction renvoie "Nothing". Je cherche à savoir si l'obj Fonction vbscript [ par gastong ] Bonjour, J'essaye d'appeller une fonction VBScript qui est déclencher lors de l'évenement "UNLOAD" du . Je n'ai aucune difficulté à appeler une fonc Fonction replace en VBA, problème [ par Spylover ] Bonjour,j'utilise chez moi Office XP et j'utilise la fonction replace(,,,) qui fonctionne très bien, à titre pro, j'essaie d'utiliser cette fonction e Problème fonction replace(,,,) en VBA [ par Spylover ] Bonjour,j'utilise chez moi Office XP et j'utilise la fonction replace(,,,) qui fonctionne très bien, à titre pro, j'essaie d'utiliser cette fonction e capture paquet [ par amiro ] j'ai utiliser une fonction appartenant a la dll wpcap.dllje le declare comme suit mais ça m'affiche cette erreur lors de son appel Text1.Text = pcap_l Quel DLL utilise la fonction SEND [ par maxwells ] Bonjour je voudrais savoir quel DLL ou quel OCX utilise la fonction send de VB pour en voyer des mailMerci à tousM@xwells<FONT color=#0 name !!! renommer un répertoire... [ par mathomtb ] Développeuses, développeurs !! J'ai un prob avec la fonction Name qui est censé renommé un repertoire... je comprends pas pourquoi, peut être parce qu Avec le debugger ca marche mais sans... ca marche pas [ par firens ] Hello, voila mon prob bizarre... j'ai fais une fonction qui permet de placer une valeur TRUE dans un tableau en fonction de certaines comparaisons.. maudite Arctangente [ par johan_geii ] Salut à tous :) J'ai quelques soucis d'utilisation de la fonction Arctangente. Lorsque j'utilise cette fonction (atan ou atan2), j'obtiens toujours d datePart bug? [ par Jomba ] bonjour,j'utilise dans un de mes programmes la fonction datepart :Dim test AsInteger<font


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales