Envoyé par
Pierre447
(par ailleurs, quelle est la différence entre <mex.h> et "mex.h").
C'est une question de chemin connu ou pas par le "compilateur".
Les fichiers entêtes entre <> sont cherchés dans les chemins connus, ceux entre "" sont cherchés dans le dossier courant. dans ce dernier cas, on peut soit utiliser des chemins relatifs, soit spécifier les chemins à l'aide de -I
Sinon, prenons un exemple simple
Soit une fonction C dans le fichier fibonacci.c :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| /* fibonacci.c */
#include "fibonacci.h"
int fibonacci(int n)
{
int i,a,b,c;
a = 1;
b = 1;
for (i=1;i<=n;i++)
{
c = a+b;
a = b;
b = c;
}
return c;
} |
Le fichier entête fibonacci.h qui va avec :
1 2 3 4 5 6 7 8
| /* fibonacci.h */
#ifndef FIBONACCI_H_INCLUDED
#define FIBONACCI_H_INCLUDED
int fibonacci(int);
#endif |
Et le MEX fibonaccic.c qui fait appel à cette fonction :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| /* fibonaccic.c - MEX */
#include "mex.h"
#include "fibonacci.h"
void mexFunction(int nlhs, mxArray *plhs[ ],
int nrhs, const mxArray *prhs[ ])
{
int n = 10, c;
c = fibonacci(n);
mexPrintf("Le terme n°%d de la suite de Fibonacci vaut %d\n", n, c);
} |
Si tous les fichiers sont dans le même dossier :
mex fibonaccic.c fibonacci.c
Si, par exemple, fibonacci.h se trouve dans le sous-dossier h et fibonacci.c dans le sous-dossier src :
mex fibonaccic.c ./src/fibonacci.c -I"./h"
Mais la on sort un peu du cadre de la programmation MATLAB.
Tu peux faire des recherches sur la rubrique C => http://c.developpez.com/
Partager