Vb et langage c

cs_lelass Messages postés 4 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 31 mars 2009 - 11 mars 2009 à 13:51
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 - 15 mars 2009 à 23:27
slt a tous est-il possible  d'appeler un code ecrit en langage c et l'utiliser en vb?Merci

9 réponses

The Meteorologist Messages postés 232 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 3 novembre 2011 1
11 mars 2009 à 14:42
Bonjour lelass, bien que cela est possible les DLL servent à ça ;) Compile une DLL en C avec tes fonctions. Tu pourras ensuite les appeler simplement avec Declare Function depuis VB.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 mars 2009 à 15:25
faut les coder en stdcall
bien voir les transposition des differents types, mais c'est ok
0
cs_lelass Messages postés 4 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 31 mars 2009
11 mars 2009 à 20:02
Merci pour vos reponses,mais je suis debutant en C et Vb dc je ne connait vraiment pas les dll encore moins de les compiler.Pourriez-vous m'aider une fois de plus?
0
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
12 mars 2009 à 02:24
Salut lelass

Je n'ai pas beaucoup d'avance sur toi sur les dll. Voila un programme VBA qui appelle une fonction ajouter d'une dll générée par visual C++. Les paramètres à l'appel sont deux Long, et la valeur retournée par la fonction est un Long égal à la somme des deux paramètres. Le type Long en vba/vb6 est équivalent au type Int en c et occupe 4 octets dans la pile.

Voici la macro essai ous visual basic :

Public Declare Function ajouter Lib "test" Alias "_ajouter@8" (ByVal a As Long, ByVal b As Long) As Long
Sub essai()
    Dim a As Long
    Dim b As Long
    Dim res As Long
    a = 2
    b = 3
    res = ajouter(a, b) ' appelle la fonction ajouter de la dll test.dll, qui retourne la somme de a et b
End Sub

Et voici la fonction ajouter en c++ :

extern "C" _declspec(dllexport)
int _stdcall ajouter( int a, int b)
{
    return (a + b);
}

Je pense que la sytaxe de ce code devrait être bonne pour VB6 et C.

Amicalement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 mars 2009 à 08:14
euh, t'es loin d'être obligé de décorer ainsi le nom de tes fonctions... (@8)
0
cs_lelass Messages postés 4 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 31 mars 2009
12 mars 2009 à 19:03
    Vraiment un grand merci a vous tous,mon programme fais exactement c ke jatendais depuis,en passant justement par les .dll.

              C'est super sympas.....encore merci..........
0
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
12 mars 2009 à 19:18
trop top, lelass.

Renfield, tu as entièrement raison. J'essaie désespérément d'enlever cette décoration. J'ai posé la question sur cppfrance.com mais c'est plus facile de me débarrasser de ma belle-mère que de cette déco. Je dois être nul. Oui, c'est sûrement ça .
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
15 mars 2009 à 21:18
tu passes bien par un fichier .def ?
0
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
15 mars 2009 à 23:27
Salut Renfield

Oui, je passe bien par un fichier .def, mais je n'avais pas modifié les paramètres de l'éditeur de liens. J'ai ajouté un paramètre /def dans les directives de l'éditeur de liens comme cela m'a été suggéré sur cppfrance.com, et la décoration a été supprimée.

Merci
0
Rejoignez-nous