Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3252 connectés 

  FORUM HardWare.fr
  Programmation
  C

  dll en C compatible vb6

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

dll en C compatible vb6

n°2487728
benx2000
so far is the sun !
Posté le 27-12-2024 à 15:50:19  profilanswer
 

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 :

Code :
  1. // ExampleDLL.h
  2. #ifndef EXAMPLEDLL_H
  3. #define EXAMPLEDLL_H
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. export void __stdcall(dllexport) int Add(int a, int b);
  8. #ifdef __cplusplus
  9. }
  10. #endif
  11. #endif // EXAMPLEDLL_H
  12. // ExampleDLL.cpp
  13. #include "windows.h"
  14. #include "ExampleDLL.h"
  15. extern "C" {
  16. export void __stdcall int Add(int a, int b) {
  17.         return a + b;
  18.     }
  19. }


 
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

mood
Publicité
Posté le 27-12-2024 à 15:50:19  profilanswer
 

n°2487729
rat de com​bat
attention rongeur méchant!
Posté le 27-12-2024 à 16:47:24  profilanswer
 

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.


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°2487833
TotalRecal​l
Posté le 28-12-2024 à 23:38:48  profilanswer
 

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 :o
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 :o


Message édité par TotalRecall le 28-12-2024 à 23:40:11

---------------
Topic .Net - C# @ Prog
n°2487992
rat de com​bat
attention rongeur méchant!
Posté le 31-12-2024 à 16:05:14  profilanswer
 

Pourquoi tu m'as répondu par MP? Faut répondre ici dans le sujet...


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°2487995
TotalRecal​l
Posté le 31-12-2024 à 16:54:17  profilanswer
 

Tiens c'est marrant j'allais lui dire la même chose, on a dû recevoir le même MP :d
 
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 :o


---------------
Topic .Net - C# @ Prog
n°2488009
xilebo
noone
Posté le 31-12-2024 à 18:24:06  profilanswer
 

Je suis étonné qu'on vienne poser une question ici à l'heure de chatgpt ou équivalent :o
 

n°2488012
TotalRecal​l
Posté le 31-12-2024 à 18:39:57  profilanswer
 

Spafo. Surtout qu'à mon avis il se rappellera mieux que nous des subtilités de ces manips des temps anciens.


---------------
Topic .Net - C# @ Prog
n°2488013
xilebo
noone
Posté le 31-12-2024 à 18:43:22  profilanswer
 

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 :o
 
Bon après ,j'ai pas vb6 , je peux pas tester. Je serais lui, je le ferais plutôt en python  :jap:  
 

Code :
  1. // DLL : AddFunction.dll
  2. // add_function.cpp
  3. #include "pch.h"  // Si vous utilisez Visual Studio, cela est nécessaire.
  4. #include <windows.h>
  5. extern "C" __declspec(dllexport) int Add(int a, int b) {
  6.     return a + b;
  7. }
  8. // DllMain : Point d'entrée de la DLL
  9. BOOL APIENTRY DllMain(HMODULE hModule,
  10.                       DWORD  ul_reason_for_call,
  11.                       LPVOID lpReserved) {
  12.     switch (ul_reason_for_call) {
  13.     case DLL_PROCESS_ATTACH:
  14.     case DLL_THREAD_ATTACH:
  15.     case DLL_THREAD_DETACH:
  16.     case DLL_PROCESS_DETACH:
  17.         break;
  18.     }
  19.     return TRUE;
  20. }
  21. // Commande de compilation (ligne de commande) :
  22. // msbuild /t:Build /p:Configuration=Release /p:Platform=x64 add_function.sln
  23. ' VB6 : Import et appel de la DLL '
  24. ' Dans VB6 '
  25. ' Declare Function Add Lib "AddFunction.dll" (ByVal a As Long, ByVal b As Long) As Long '
  26. ' Sub de test dans VB6 '
  27. ' Sub TestAdd() '
  28. '     Dim result As Long '
  29. '     result = Add(5, 7) '
  30. '     MsgBox "Le résultat est : " & result '
  31. ' End Sub

n°2488326
benx2000
so far is the sun !
Posté le 03-01-2025 à 18:17:33  profilanswer
 

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
 
 
 
 

n°2488331
benx2000
so far is the sun !
Posté le 03-01-2025 à 18:31:46  profilanswer
 

xilebo a écrit :

Je suis étonné qu'on vienne poser une question ici à l'heure de chatgpt ou équivalent :o
Bonjour,
figurez vous que je l'ai fait avant de m'orienter vers le forum.
chatGPT propose a proposé plusieurs réponses sans donner la solution.  :??:  


mood
Publicité
Posté le 03-01-2025 à 18:31:46  profilanswer
 

n°2488335
xilebo
noone
Posté le 03-01-2025 à 18:38:11  profilanswer
 

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.

n°2488347
xilebo
noone
Posté le 03-01-2025 à 19:17:01  profilanswer
 

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 :  
 
https://i.imgur.com/p8kKqBCl.png
 
 
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é )  
https://i.imgur.com/NfMI2GEl.png
 
3) et tu lances la compilation comme ça :  
 
 
https://i.imgur.com/8VKKUk5l.png
 
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  :  
 
https://i.imgur.com/r2w5M7Sl.png
 
 
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 :)

n°2488438
benx2000
so far is the sun !
Posté le 05-01-2025 à 18:26:25  profilanswer
 

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.

n°2488439
TotalRecal​l
Posté le 05-01-2025 à 19:07:50  profilanswer
 

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 :o)


---------------
Topic .Net - C# @ Prog
n°2488444
benx2000
so far is the sun !
Posté le 05-01-2025 à 19:52:17  profilanswer
 

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 ?  
Tu veux bien nous dire dans quel contexte tu te retrouves à faire ça ? (aucune agression de ma part, simplement curieux :o)


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 ...

n°2488757
TotalRecal​l
Posté le 08-01-2025 à 10:55:46  profilanswer
 

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.


Message édité par TotalRecall le 08-01-2025 à 10:56:22

---------------
Topic .Net - C# @ Prog

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  dll en C compatible vb6

 

Sujets relatifs
technos cloud, rust.. Quid d'apprendre le C aujourd'hui?C# création de XML
Dev C++ ComboBox API Windows"appli" Java/C pour Android 4 / API level 16 (abandonné)
[résolu] [C] errx() et appel fonctions atexit() - que dit le standard?Samba en C++
[C] Core dumped avec pthread[C] permettre à l’utilisateur de modifier une chaîne de caractères
[C#] Class, Struct, c'est quoi maintenant la différence ?[C#/WPF] PresentMon -> interface graphique ( FPS monitoring )
Plus de sujets relatifs à : dll en C compatible vb6


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)