Vous avez plusieurs options, selon votre situation.
1) Si votre code C est structuré de manière à pouvoir être appelé depuis matlab, vous pouvez compiler votre code C en tant que fichier mex. Vous appelez alors votre fonction C depuis matlab et renvoyez votre résultat. Pour retourner votre structure, vous devez créer un tableau matlab dans votre code C et y copier les paramètres de la structure. L'interface pour cela est le mxArray. Ce n'est pas le processus le plus pratique, mais cela fonctionne bien.
fichiers et mxArray: Mex http://www.mathworks.com/help/techdoc/matlab_external/f29502.html
2) Utilisez le moteur Matlab pour charger vos valeurs dans Matlab sans avoir à compiler votre code dans un MEX. Le moteur vous permettra d'exécuter des commandes matlab à partir de votre programme C. Vous pouvez également charger des variables dans l'espace de travail. Vous devrez toujours créer un mxArray contenant les valeurs que vous voulez copier. Vous pouvez ensuite utiliser la fonction engPutVariable pour copier le mxArray dans votre espace de travail matlab. Notez que le moteur conserve son propre espace de travail, il ne copie pas automatiquement la variable dans l'espace de travail de votre session matlab actuelle par défaut. Il existe des commandes pour déplacer des variables entre les espaces de travail, mais je n'ai pas étudié cela. J'ai trouvé plus rapide de simplement enregistrer les variables dans un fichier mat et de le charger dans l'espace de travail principal, mais ce n'est pas idéal si vous avez besoin d'une approche automatisée.
moteur Matlab: http://www.mathworks.com/help/techdoc/matlab_external/f29148.html
Comment avez-vous obtenu le pointeur 'bInC' dans MATLAB? Je suis intéressé. – Stan
@stan c'est mon queston aussi. Je voudrais obtenir un pointeur comme bInC qui pointe vers la mémoire de la structure b en C. C'est juste un exemple pour clarifier ma question – javaMan
Si vous construisez le programme C dans un fichier exécutif, et que vous voulez obtenir 'bInC.param1 'ou quelque chose comme ça quand le fichier exécutif est en cours d'exécution ... c'est impossible. Ce que vous pouvez probablement faire est de partager le contenu dans un fichier. – Stan