Visual Basic et C

Fermé
Sasumid Messages postés 76 Date d'inscription samedi 27 décembre 2008 Statut Membre Dernière intervention 4 avril 2012 - 20 août 2010 à 02:34
Sasumid Messages postés 76 Date d'inscription samedi 27 décembre 2008 Statut Membre Dernière intervention 4 avril 2012 - 21 août 2010 à 23:19
Bonjour,
Je me demander si on pouvait programmer une application en Visual Basic et Langage C.
Faut-il Mettre du code C dans le Vb6 pour le VB (ce qui m'étonnerai vue que Vb 6 ne contient pas les headers du C), ou est-ce le code VB qu'il faut mettre dans le C ce qui m'étonnerai sinon on ne peut plus faire de windows form, ou est-ce impossible ?
Voilà merci d'avance :)

Sasumid


A voir également:

5 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
20 août 2010 à 08:37
Bonjour,
Tu dis VB6 mais tu emploi l'expression windows form qui est plutôt un terme de VB.net ?
Quoi qu'il en soit, pour lier d'éventuelles fonctions tu peu faire des dll en C et les appleler depuis VB, l'nverse ne me semble pas possible.
A+
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
20 août 2010 à 09:51
Bonjour,

Effectivement tu peux faire des dll en C et les appeler depuis VB (VB.net).
L'inverse est également possible.

Cdlt,
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
20 août 2010 à 11:52
Bonjour fiddy,
L'inverse est également possible
Je ne suis pas tout à fait d'accors, bien que l'ont puisse faire des dll en VB, elle ne sont pas utilisable de la même façon qu'ine dll normale.
C'est à dire que les appel ne se font pas au moyen de déclaration mais en incluant un instance de la dll et en appellant directement ses fonctions.
A+
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
Modifié par fiddy le 20/08/2010 à 12:27
Je ne suis pas tout à fait d'accors
Et pourtant, c'est tout possible.

Tu confonds probablement avec une DLL ActiveX. Si le VB permet plus facilement la création de cette dernière, effectivement elle ne marchera si on l'appelle comme une DLL normale. En fait, c'est qu'il n'existe pas de commutateur /DLL dans ce cas.
Néanmoins, avec un peu de travail, on peut très bien créer une DLL classique en VB.
Grosso modo, il faut créer un .def manuellement, intercepter l'appel au linker, et ajouter le fameux commutateur.
Et là, on aura une DLL classique, appelable depuis n'importe quel programme.
Cdlt,
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
20 août 2010 à 12:52
Effectivement, j'avais déjà "survoller" cette possibilité mais vu la complexité je n'ai pas approfondi !!
Me semble quand même plus réaliste de faire l'inverse.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
20 août 2010 à 13:29
C'est également mon avis.
D'autant plus que, je ne vois pas l'intérêt de faire une routine en VB et se compliquer le reste en C ^^. Soit on prend un langage de haute génération, et on y inclut des DLL faites dans des langages performants, soit on fait tout dans le langage de haute génération.
Il n'empêche que c'est bon de savoir que c'est possible, d'où mon intervention.
++
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
20 août 2010 à 15:09
IDEM:

J'ai déja utilisé dans un projet visual basic une DLL que j'avais créé en C affin d'implémenter un protocol réseau bas niveau (modbus / TCP) . Ce n'est pas particulièrement compliqué à faire dans la mesure ou on a des bases dans ces 2 langages.

A froid, je me rapelle d'un problème qui m'avais bien embété 'jusqu'à ce que j'identifie la cause): la taille des variables n'est pas forcément la même!
il me semble que le integer en VB6 correspondait au short en C++ ....
0
Sasumid Messages postés 76 Date d'inscription samedi 27 décembre 2008 Statut Membre Dernière intervention 4 avril 2012 6
Modifié par Sasumid le 21/08/2010 à 00:30
Merci de vos réponse mais mon amis n'utilise pas .net.
Il utilise Visual Basic 6.0 le logiciel de Microsoft et moi j'utilise Code::Blocks.

Mais sinon si j'ai bien compris faut que je fasse des DLL en C et lui passer, ais-je bien compris ? et si oui ou doit-il les incorporé ensuite ?

Merci de vos réponse
I'm the game and I'm The King Of Kings
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
21 août 2010 à 10:41
Oui c'est ça.
Par contre, il y a un point qui me gène. Pourquoi tu souhaites faire des DLL en C ?
Par ailleurs, une fois que tu as fait tes DLL, tu devras faire un .def. De plus, il faut faire attention en C aux éventuelles décorations de la part des compilateurs qui te changent le nom des fonctions à exporter. Sinon ensuite, il peut mettre la DLL dans le répertoire system de windows, et l'appeler comme une DLL classique.
Cdlt,
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
21 août 2010 à 11:24
Dans le repertoire de windows OU dans le répertoire de l'application ....
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
21 août 2010 à 12:36
A Nabla's
Oui, mais quand tu lances ton projet dans VB, ce ne sera pas le .exe se trouvant dans le répertoire du projet qui sera exécuté. Donc si tu mets la DLL dans le répertoire d' l'application tu risques d'avoir un joli message d'erreur stipulant "DLL introuvable". C'est pour ça que j'ai dit de mettre dans le répertoire système de Windows. Par contre, j'aurais pu rajouter le répertoire Windows.
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
21 août 2010 à 17:55
sous VB6 il y a un dossier de VB ou l'installer, je me rappelle plus .... enfin, au moins le repertoire de windows est toujours l'endroit le plus pratique car commun à toutes les applis
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
21 août 2010 à 18:07
Petite précision, pas System, mais system32
Et autre avis..
Si cette dll ne doit servir que pour cette appli il est inutile de se casser la tête avec une dll. Si tu veux aider ton amis tu fais une dll ActiveX en VB6 et tu lui transmet le fichier "cls" non compiler qu'il n'aura que d'importer dans sont appli.
Juste quelques lignes de code à ajouter mais qui valent bien la simplicité qui en résulte.
Avantage, en cas de modif ou de bug il ne faudrait pas repasser par tout ces stades.
M'enfin.. c'est ce que moi je ferais,
0

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

Posez votre question
Sasumid Messages postés 76 Date d'inscription samedi 27 décembre 2008 Statut Membre Dernière intervention 4 avril 2012 6
21 août 2010 à 23:19
Je suis désolé mais je n'y comprend rien ><.
on pourrait m'expliquer de façon détailler ?

Je sais que j'embete mais voilà la je suis perdu ><
0