[VBA/ DLL C] Passage d'un paramètre
Résolu
HOLU
-
Darkantas Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Darkantas Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai construit une méthode C dans une dl, et je l'appelle depuis Microsoft Visual Basic (dans Excel) en lui passant un paramètre, mais celui ci n'est pas transmis jusqu'à la fonction C.
Voici mon code :
Fichier dllmain.c :
Fichier dll.h :
Code vba depuis Excel :
Résultat : Le fichier est bien créé, mais la valeur dedans est "1308054" !
Comment ça se fait?
Merci pour votre aide.
J'ai construit une méthode C dans une dl, et je l'appelle depuis Microsoft Visual Basic (dans Excel) en lui passant un paramètre, mais celui ci n'est pas transmis jusqu'à la fonction C.
Voici mon code :
Fichier dllmain.c :
#include "dll.h" #include <stdlib.h> #include <stdio.h> void __stdcall ecriture(int t) { FILE * fich = fopen("fichier_test.txt", "w"); fprintf(fich,"%d\n",t); fclose(fich); }
Fichier dll.h :
#include <stdio.h> #include <string.h> #include <windows.h> #define export __declspec(dllexport) /* définit la macro EXPORT */ export void __stdcall ecriture(int t);
Code vba depuis Excel :
Declare Sub ecriture Lib "Projet_test.dll" (t As Integer) Sub test() Call ecriture(5) End Sub
Résultat : Le fichier est bien créé, mais la valeur dedans est "1308054" !
Comment ça se fait?
Merci pour votre aide.
A voir également:
- [VBA/ DLL C] Passage d'un paramètre
- Remettre parametre usine pc - Guide
- Parametre dns - Guide
- Parametre windows - Guide
- Passage qwerty azerty - Guide
- Netflix paramètre compte - Guide
Donc il faut mettre :
Declare Sub ecriture Lib "Projet_test.dll" (ByVal t As Long)
Merci beaucoup vous deux !
Il existe également une option dans Visual qui permet d'aligner les structures sous le format 4 octets. Je vous conseille de le mettre pour éviter tout futurs problèmes.