Hello,
J'ai un petit probl�me dans l'utilisation d'un DLL que je cr�e.
Voici le code dans ma DLL :
Comme vous le remarquez, il s'agit d'une fonction avec un nombre de param�tres variables.
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 #include <stdarg.h> extern "C"__declspec(dllexport) __stdcall int Insert(AnsiString NomTable, ...); int __stdcall Insert(AnsiString NomTable, ...) { int total = 0; va_list params; AnsiString arg; va_start(params, NomTable); while (va_arg(params, AnsiString) != 0) { total ++; }; return total; };
D'une autre application, j'essaie d'appeler cette fonction dans ma DLL (que je charge dynamiquement). Voici le code :
Mon probl�me est le suivant : lors de l'appel � la fonction GetProcAddress, j'ai un retour NULL, ce qui veut dire que ma fonction n'est pas trouv�e dans la DLL. Si je retire le fait qu'il y ait des param�tres variables, cela fonctionne sans probl�me. Quelqu'un peut-il m'aider afin de savoir comment appeler une fonction ayant des param�tres variables dans un DLL ?
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 #include <stdarg.h> typedef int (__stdcall * MYDLLPARAMS) (AnsiString NomTable, ...); void __fastcall TForm2::Button1Click(TObject *Sender) { MYDLLPARAMS impfuncparams; HINSTANCE hinstdll; int iret; if ((hinstdll = LoadLibrary("DB.DLL"))) { impfuncparams = (MYDLLPARAMS) GetProcAddress (hinstdll, "Insert"); if (impfuncparams) { iret = impfuncparams("TEST", "TEST1", "TEST2"); }; FreeLibrary(hinstdll); }; }
Merci.
Partager