Bonjour � tous,
une question qui est entre du C++ et du VBA (j'ai choisi de la mettre ici) :
Je veux compiler une dll pour l'utiliser ensuite en VBA sous Excel. C'est la premi�re fois que je fais �a et je veux juste assimiler le principe avec un exemple tr�s simple.
J'ai cr�� un projet sous code block. Voici mon .h :
et voici mon .cpp :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #ifndef __MAIN_H__ #define __MAIN_H__ #include <windows.h> /* To use this exported function of dll, include this header * in your project. */ #ifdef BUILD_DLL #define DLL_EXPORT __declspec(dllexport) #else #define DLL_EXPORT __declspec(dllimport) #endif #ifdef __cplusplus extern "C" { #endif int DLL_EXPORT carre(int chiffre); #ifdef __cplusplus } #endif #endif // __MAIN_H__
Je compile ma dll, �a a l'air de fonctionner. Je vais sous Excel et je d�clare dans un module :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #include "main.h" // a sample exported function int DLL_EXPORT carre(int chiffre) { return chiffre*chiffre; } extern "C" DLL_EXPORT BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { switch (fdwReason) { case DLL_PROCESS_ATTACH: // attach to process // return FALSE to fail DLL load break; case DLL_PROCESS_DETACH: // detach from process break; case DLL_THREAD_ATTACH: // attach to thread break; case DLL_THREAD_DETACH: // detach from thread break; } return TRUE; // succesful }
Option Explicit
Private Declare Function carre Lib "C:\Users\Nicolas\Desktop\DLL C++\TestDLL\bin\Release\TestDLL.dll" (ByVal chiffre As Integer) As Integer
Sub toto()
Debug.Print carre(10)
End Sub
J'obtiens l'erreur 49 :
Convention d'appel de dll incorrecte
J'ai tent� de changer le type des variables en double dans les deux (C et VBA), mais sans succ�s. Est ce que quelqu'un peut me dire d'o� vient le probl�me ?
Je vous remercie
Partager