dll en C compatible vb6 - C - Programmation
Marsh Posté le 27-12-2024 à 16:47:24
Et quel est le problème exact?
Sinon le VB6 c'est vieux comme le monde non? Si c'est pour développer un nouveau truc je conseillerais de partir sur un language plus récent.
Marsh Posté le 28-12-2024 à 23:38:48
Oui, au delà de l'intérêt pédagogique de comprendre l'export dll C++ pour exposer à VB c'est quoi l'objectif d'apprendre à faire du VB6 aujourd'hui ?
Rien que l'IDE doit être galère à faire tourner sous W10 / 11 j'imagine.
Si tu veux faire du VB et que ça n'est pas pour maintenir un truc des années 90 (!) fais au moins du VB .Net. Ou encore mieux, pas de VB du tout.
Et effectivement si ça marche pas faut préciser un peu parce que là y a pas de question
Au pifomètre je dirais que ta DLL n'est pas compilée avec les bonnes options pour exporter, ou que l'import de la référence côté VB n'est pas bon
Marsh Posté le 31-12-2024 à 16:05:14
Pourquoi tu m'as répondu par MP? Faut répondre ici dans le sujet...
Marsh Posté le 31-12-2024 à 16:54:17
Tiens c'est marrant j'allais lui dire la même chose, on a dû recevoir le même MP
Et qui (pour le mien en tout cas) ne répond pas aux remarques. Genre est ce qu'il y a bien les __declspec, /EXPORT et autres machins que j'ai oublié quelque part entre 2005 et 2010
Marsh Posté le 31-12-2024 à 18:24:06
Je suis étonné qu'on vienne poser une question ici à l'heure de chatgpt ou équivalent
Marsh Posté le 31-12-2024 à 18:39:57
Spafo. Surtout qu'à mon avis il se rappellera mieux que nous des subtilités de ces manips des temps anciens.
Marsh Posté le 31-12-2024 à 18:43:22
TotalRecall a écrit : Spafo. Surtout qu'à mon avis il se rappellera mieux que nous des subtilités de ces manips des temps anciens. |
j'ai pas pu m'empêcher de le faire
Bon après ,j'ai pas vb6 , je peux pas tester. Je serais lui, je le ferais plutôt en python
Code :
|
Marsh Posté le 03-01-2025 à 18:17:33
je compile la dll avec ms vc++ 6.0
le cas suivant le plus simple marche :
Def.h
#include "windows.h"
#define export __declspec (dllexport)
export void __stdcall HelloWorld(void );
fichier.c
#include "Def.h"
void __stdcall HelloWorld(void )
{
MessageBox(NULL,"Hello !","Message",MB_OK);
}
.def
LIBRARY Fonctions
DESCRIPTION "Essai de dll"
EXPORTS
HelloWorld _HelloWorld@0
'dans module vb6
Private Declare Sub HelloWorld Lib "Fonctions.dll" ()
Private Sub Command1_Click()
HelloWorld
End Sub
Marsh Posté le 03-01-2025 à 18:31:46
xilebo a écrit : Je suis étonné qu'on vienne poser une question ici à l'heure de chatgpt ou équivalent |
Marsh Posté le 03-01-2025 à 18:38:11
Bonjour
Meilleurs voeux.
Si chatgpt ne t'a pas donné une réponse correcte, c'est que la question était mal posée. Il faut parfois préciser 2-3 fois pour un résultat optimal. en tout cas, à une question aussi simple, il a forcément la réponse.
Marsh Posté le 03-01-2025 à 19:17:01
Allez, je me suis prêté à l'exercice.
N'ayant pas visual studio chez moi ( qu'au travail), je viens d'installer la version visual studio 2022 community edition. Elle est gratuite et comme les autres membres te l'ont dit, il n'y a aucune raison objective pour lesquelles tu utiliserais encore visual studio 6.0 et VB6.0. Les rares cas encore utiles seraient de maintenir une vieille application écrite dans ce langage et qui ne serait pas portable simplement.
Je doute que ce soit le cas ici pour toi, et que tu es dans le cadre d'un apprentissage, alors je t'invite à le faire avec des outils modernes. Tu trouveras visual studio community 2022 ici : https://visualstudio.microsoft.com/fr/vs/community/
Tu installes ca :
Ensuite, en posant 2-3 question à chatgpt, il m'a indiqué de faire les choses suivantes:
1) créer un projet visual studio 2022 pour créer une dll en faisant -> Créer nouveau projet, et dans recherche taper : "Bibliothèque de lien dynamique avec exportation (DLL)".
Une fois ceci fait, il suffit de faire ceci :
2) tu as un template deja créé, tu rajoutes ta fonction dll, tu configures le projet en release ( pas obligé )
3) et tu lances la compilation comme ça :
Tu obtiens alors ta dll dans le chemin que tu as donné pour ton projet.
4) tu crées un autre projet avec visual cette fois-ci de type : Application Windows Forms (.NET) ( tu verras vb dans les tags du type de projet )
5) tu rajoutes les quelques lignes de code ci-dessous, et tu crées un bouton :
Le programme a bien compilé, a bien chargé la dll, et lorsque je clique sur le bouton, il fait bien l'addition.
Conclusion :
- 30sec pour poser la question à chatgpt
- 10mn d installation de visual studio code
- 5mn pour tout créer comme il faut ( les 2 projets )
- 10mn pour rédiger ce message.
Bon courage
Marsh Posté le 05-01-2025 à 18:26:25
Merci xilebo pour ton assistance et ta disponibilité, je passe à https://visualstudio.microsoft.com/fr/vs/community/
je verrai si ca marche avec vb6, car c'est de cela que qu'il s'agit.
Bonne année , meilleurs vœux.
Marsh Posté le 05-01-2025 à 19:07:50
On a beau avoir été trois à insister sur le fait que VB6 c'est totalement obsolète, tu veux quand même partir là-dessus ?
Tu veux bien nous dire dans quel contexte tu te retrouves à faire ça ? (aucune agression de ma part, simplement curieux )
Marsh Posté le 05-01-2025 à 19:52:17
TotalRecall a écrit : On a beau avoir été trois à insister sur le fait que VB6 c'est totalement obsolète, tu veux quand même partir là-dessus ? |
Pour ton information VB6 revient sous RADBASIC 100% compatible VB6 :
Encore un peu de temps pour la version finale : https://www.patreon.com/c/radbasic/home
Je passe volontiers à visual studio 2000 (merci à xilebo), intéressant pour compiler des plugins pour XOJO "malgré son avarice en contrôles" que j'ai adopté en remplacement de VB6.
Initialement RealStudio, XOJO (Cross-platform Object Oriented) me convient personnellement.
La seule chose qu'il ne sait pas faire , contrairement à vb6 , c'est le COM Object de Microsoft très utile avec C/C++ et surtout matlab ...
Marsh Posté le 08-01-2025 à 10:55:46
Je connais le projet radbasic, mais ça c'est beaucoup plus la réponse à comment tu comptes t'en servir plus que pourquoi tu le souhaites.
Même si la fin de ton post donne quelques indices.
Marsh Posté le 27-12-2024 à 15:50:19
Bonjour,
je suis à le recherche d'aide pour apprendre à faire une DLL en C pour être utilisée sous "VB6".
un exemple simple calculant la somme de deux nombres par exemple.
J'ai essayé cet exemple :
LIBRARY ExampleDLL
EXPORTS
Add
'ExampleVB6.bas
Declare Function Add Lib "ExampleDLL.dll" (ByVal a As Integer, ByVal b As Integer) As Integer
Sub TestDLL()
Dim result As Integer
result = Add(3, 4)
MsgBox "Result: " & result
End Sub