Bonjour,
Je cherche à utiliser du code C++ dans un programme fortran.
En fait, j'aimerais utiliser une librairie de pilotage d'un pointeur 3D en fortran+openGL.
Quelqu'un a-t-il une idée ?
Par avance merci.
Version imprimable
Bonjour,
Je cherche à utiliser du code C++ dans un programme fortran.
En fait, j'aimerais utiliser une librairie de pilotage d'un pointeur 3D en fortran+openGL.
Quelqu'un a-t-il une idée ?
Par avance merci.
déjà, qu'appelle-tu un "pointeur 3D" un tableau de 3 pointeurs??? ensuite il existe déjà l'attribut pointeur pour les variable fortran depuis le fortran 90... il se manipule différent du C++ mais bon...
ensuite si tu ne cherche qu'à utiliser opengl dans un programme fortran, le c++ n'est pas obligatoire, par exemple : http://math.nist.gov/f90gl/ ensuite il est déconseillé d'utiliser fortran pour faire du "graphique" car la programmation serai lourde et coûteuse en temps (mais rien n'est impossible ;)) donc souvent utilise le fortran pour les calculs de "coeur" et le c++ pour l'interface...
pour le lien entre ces deux language, à partir de la norme 2003 (et donc 2008 aussi) les liens entre les deux laguage sont renforcé même si c'est plutôt au langage C que cela s'applique (le concepte de classe du c++ est assez délicat par exemple)
je donne que des pistes générales, précise un peu plus tes besoin!!
Merci pour la réponse. Je crois ne pas m'etre assez expliqué :
Le pointeur 3D dont je parle n'a rien a voir avec la notion de pointeur. Il s'agit d'une souris 3d de la marque 3D connexion. Or, dans le SDK fourni avec, les librairie ne sont présentes qu'en C++, d'ou ma question, peut-etre mieux formulée cette fois :
Commanet faire pour compiler ces librairies et pouvoir avoir accès aux informations auxquelles elles donnent accès ( typiquement les 3 rotations, les 3 translations ) ?
oh!!!! alors là, j'étais en effet à coté de la plaque!!!! désolé...
alors j'aurais une solution (bourrine): comme sous unix-like "tout est fichier" il suffit d'ouvrir en mode "read" le fichier correspondant à ton périphérique (ça c'est la partie facile) et ensuite de comprendre ce que te sort le programme lors des divers mouvement: pas très compliqué mais un peu long.... en gros tu réécrit les libs ...
sinon l'idée est d'utiliser les libs déjà faites... les normes récentes de fortran ont voulu une interopérabilité avec le language C je te conseil donc de faire un fichier de "traduction" : des routines fortran qui vont appeler les routines C/C++ ainsi dans ton code tu utilisera directement les routine fortran sans te poser de question. en gros créer le module manquant dans la lib pour intégrer le fortran...
pour ce fichier de traduction il faut aller regarder dans la norme 2003 et 2008, notament en ce qui concerne la compatibilité des type int et real...
normalement si tu utilise gcc et gfortran, il n'y a pas de gros soucis lorsque l'on mixe des ".o" généré en fortran et en C...
Ok, donc je résume,
Comme j'ai les sources des bibliothéques me permettant de piloter la souris 3D, je peux les compiler avec gcc ( éventuellement avec des options ? si oui, lesquelles)
ensuite je compile mon programme fortran avec g95 par exemple, et ensuite je linke les deux ?
C'est a peu près ça ?
En gros oui :)
En pratique c'est assez compliqué (et ca peut ne pas être portable) sauf si comme le dit genteur slayer tu utilises Fortran 2003...
Parce que bon, tu dois gérer les tailles des types, le sens des tableaux etc...
En effet, j'ai bien l'intention d'utiliser fortran 2003. D'après vous, est-ce que l'implémentation de g95 est correcte pour faire ce genre de choses, sachant que je souhaite utiliser aussi la bibliothèque F03GL ?
Perso, je ne connais pas bien g95: à l'époque, l'équipe avait laché il me semble et GNU gcc avait plutot repris gfortran pour en faire le compilateur GNU Fortran officiel (et qui suit donc les releases gcc).
gfortran supporte pas mal de spécifications f2003 mais n'est pas complète. Le meilleur compilateur Fortran 2003 à l'heure actuelle est selon moi le compilateur Intel en version 11. (Intel annonce un support à 99% de la norme F2003!)
Edit: voici une liste de ce que supporte gfortran:
http://gcc.gnu.org/wiki/Fortran2003
une remarque qui peut avoir son importance, gfortran supporte aussi une partie de la norme 2008 censée renforcé le lien avec le C, mais surtout il est clairment annoncé que l'interopérabilité est facilité avec le C et pas le C++ il semble notament que la notion de classe du C++ soit difficile à mettre en oeuvre en fortran donc attention aux confusions possibles.
De plus il peut arrivé des soucis lors de la manipulation de chaines de caractères au de tableaux, il semble préférable d'utiliser des pointeurs, et leur manipulation demande du doighté (surtout en fortran)
de plus pour les versions "stables" de gfortran semblent très allégées par rapport aux version de développement (j'utilise une version dev de aout 2008 qui contient des éléments toujours pas présent dans les version stable) il sera peut-être bon que tu essaye avec une version de gcc "à compilé soi-même" ;) certes ces différences sont minimes mais peuvent peut-être faire une différence dans ton cas.
l'idéal est que gcc va pouvoir compiler aussi bien du C que du fortran et surtout "de la même manière" améliorant de fait l'interopérabilité!
Bonne chance!