Bonjour, j'ai créé une librairie C a partir d'un ensemble de fonctions matlab que j'ai interfacée avec un programme C++. Je cherche à passer des parametres à ma fonction, dont voici le prototype :
a part poly et listContact, les autres sont de simples entiers. Et bien sur ce sont les deux premiers qui me posent probleme : il s'agit de deux listes de tailles variable dans une dimension et de 2 dans l'autre (liste de coordonnées dans un plan). Du coté C++, je m'interface en faisant ceci (essai un peu rapide qui crash)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function [VoltageMap,CurrentMap]=chipIRDropSolver(poly,listContact,... width_h, thickness_h, pitch_h,rsheet_h,... width_v, thickness_v, pitch_v,rsheet_v,... vias_res,Iconso)
Et l'appel :
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 double *data;//[] = {1,2,3,4,5,6,7,8,9}; data=(double *)malloc(2*(nbBoundaries+nbContacts+10)*sizeof(double)); for(int i=0;i<2*nbBoundaries;i+=2) { data[i]=listBoundaries[i].x; data[i+1]=listBoundaries[i+1].y; } for(int i=2*nbBoundaries;i<(2*nbBoundaries+2*nbContacts);i+=2) { data[i]=listContacts[i].x; data[i+1]=listContacts[i+1].y; } int index=2*nbBoundaries+2*nbContacts; data[index]=p1; data[index]=p2; ...
mon probleme est bien de savoir comment mettre en place mes données dans le mxCDoubleMatrix : avec des parametres de types différents c'est bien compliqué et je n'ai pas trouvé comment faire...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 in = mxCreateDoubleMatrix(2,nbBoundaries+nbContacts+10,mxREAL); memcpy(mxGetPr(in), data, 2*(nbBoundaries+nbContacts+10)*sizeof(double)); /* Call the library function */ mlxChipIRDropSolver(0, &out, (2*nbBoundaries+2*nbContacts+10), &in);
Si vous avez besoin d'infos supplémentaires n'hésitez pas !
Partager