#include #include #include #include #include #include #include "FormatString.h" #include "generic.h" #define MAX_TAILLE_MSG_ERR 1500 typedef struct { char name[MAX_FILENAME_LEN]; HINSTANCE hDLL ; } t_DLL ; t_DLL hDLL[MAX_NB_DLL] ; int CVIFUNC (*PtrDLL) (char[][FCT_LG_MAX_PARAM], int*, char[][FCT_LG_MAX_PARAM], char*); void * * cree(unsigned int taille) { void * * tableau; tableau = (void * *)malloc(taille*sizeof(void *)); return tableau; } void * * accroissement(int taille,void * * tableau) { tableau = (void * *)realloc(tableau,taille*sizeof(void *)); return tableau; } void freetab(void * * tableau) { free(tableau); } int main(void) { char Err[MAX_TAILLE_MSG_ERR] ; char erreur[1000] ; int iDLL =0 ; int bTrouve = 0 ; char sInfosTrace[500] ; int error = 0 ; int i; void ** tabgen; //equivalent pParamIN[0] et [1] char e[255] = "31"; char p[255] = "lalala"; char tab[2][255]; char tabres[2][255]; char tabtyp[2][255]; int n = 2; int * nn = &n; char type1[255] = "LONG"; char type2[255] = "CHAR"; //char code[255] = ""; long templ; //void(*b)()=NULL; //BYTE bb[27]; tabgen = cree(2); //affectation des parametres strcpy(tab[0],e); strcpy(tab[1],p); strcpy(tabtyp[0],type1); strcpy(tabtyp[1],type2); if (hDLL[iDLL].hDLL == NULL) { hDLL[iDLL].hDLL = LoadLibrary((LPCSTR)"INI_Files") ; } for (i=0;i < n;i++) { switch(tabtyp[i][0]) { case('L'): printf("%s\n",tabtyp[i]); StrToLong (tab[i], &templ); tabgen = (void * *)realloc(tabgen,(i+1)*sizeof(long)); tabgen[i] = &templ; break; case('C'): printf("%s\n",tabtyp[i]); tabgen = (void * *)realloc(tabgen,(i+1)*strlen(tab[i])); tabgen[i] = tab[i]; break; default: break; } } printf("%d\n",*(long *)tabgen[0]); printf("%s\n",(char **)tabgen[1]); printf("%d\n",sizeof(*(long *)tabgen[0])); printf("%d\n",strlen((char *)tabgen[1])); //*bb=(BYTE)code; //printf("%d\n",bb); // TRAITEMENT DES DLLs... // Chargement des DLL à utiliser, si pas déjà chargée... PtrDLL = (int (CVIFUNC *) (char[][FCT_LG_MAX_PARAM], int*, char[][FCT_LG_MAX_PARAM], char*)) GetProcAddress (hDLL[iDLL].hDLL , (LPCSTR)"DiagMult_INI_ReadVariable"); // Execution des fonctions des DLLs //infosDLL[0][iAction].paramS.nbResult = -1 ; (*PtrDLL) (tab, nn, tabres, erreur); //b=(void(*)())&bb[1]; //b(); //printf("%s\n",code); printf("%s\n",tabres[0]); printf("%s",tabres[1]); freetab(tabgen); return 0 ; }