DLL faite en C++ avec VB

Résolu
Sniper_Vgaerr Messages postés 113 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 14 août 2006 - 25 avril 2005 à 19:07
Sniper_Vgaerr Messages postés 113 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 14 août 2006 - 26 avril 2005 à 18:33
Je fais un programme de cryptage avec clé privée et publique et je prefere l'interface de VB que celle du C, mais comme le C va plus vite je prefere creer des DLL.
J'ai créer une DLL en C++ du genre :

int __stdcall Myfunc (int a, intb)
{
int x;
x=a+b;
return x;
}

J'ai fait aussi le fichier .def.

J'aimerai que cette fonction me retourne un paramètre que je puisse ensuite utiliser sous VB mais avec return x ca marche pas et sous VB j'ai mis:

private declare function Myfunc lib "madll" (byval a as integer, byval b as integer) //j'ai une erreur si je met as integer à la fin de cette phrase

private sub command1_click()
call Myfunc(3,3) //Ici si je met ret = Myfunc (3,3) ca ne marche pas non plus
end sub

Si quelqu'un pouvait me renseigner ca serait vraiment cool car la je galère.

Volez, planez et vous comprendrez pourquoi les oiseaux chantent.
Vive les NOSA !!! !!! !!!

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 avril 2005 à 12:25
Si ton .def est bien pris en compte par le compilo (verif dans proprietes du proj) alors pas besoin de ' extern "C" ' devant la fonction car le def est là pour éviter la décoration des noms de fonction que génère un compilo C++. Une bonne habitude est de toujours compiler une dll en mode C ainsi tout le monde peut s'en servir.
Tu prends des params 'int' dans le code C donc 32 bits, faut être cohérent dans le vb, mets tes params 'As Long' (32 bits) en vb et tout devrait aller mieux.

ciao...
BruNews, MVP VC++
3
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
25 avril 2005 à 20:34
Si tu compile en C++ (fichier source .cpp) rajoute extern "C" devant le prototype de la fonction.
extern "C" int __stdcall Myfunc (int a, intb)
0
Sniper_Vgaerr Messages postés 113 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 14 août 2006
26 avril 2005 à 18:33
Merci a tous c'est bon j'ai trouvé en fait c'etait dans le .cpp qu'il y avait un pb et maintenant c'est résolu.
Merci à tous
0
Rejoignez-nous