[VBA/ DLL C] Passage d'un paramètre
Résolu
HOLU
-
Darkantas Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Darkantas Messages postés 5 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.
2 réponses
-
Bonjour
pas sûr mais je crois que c'est
Declare Sub ecriture Lib "Projet_test.dll" (ByVal t As Integer)-
-
C'est pas grâce au ByVal, en VBA et en C tous les types de variables ne font pas la même taille, il est donc nécessaire de s'aligner sur un seul et unique modèle.
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.
-
-