2010-11-10 39 views
0

Beaucoup de gens ont pu poser cette question, cependant, je n'ai jamais vu quelqu'un donner une solution satisfaisante. D'accord, permettez-moi de clarifier ma question: j'essaie d'appeler des sous-programmes/fonctions C++ à partir de mon code fortran existant. Le point est que je fais tous dans le studio visuel 2008 (le compilateur de fortran étant Intel fortran 11.0). Dose quelqu'un peut me donner une instruction étape par étape de compiler les deux langues dans le même projet? si ce n'est pas possible de le faire dans un projet, que dois-je faire? plz montre un exemple de code, probablement seulement quelques lignes juste pour démonter la façon de procéder.mélange de programmation de fortran et C++/c sous Visual Studio

Merci d'avance.

toute personne qui veut en parler est la bienvenue. MAIS soyez très clair que je suis à la recherche de solutions avec Visual Studio et Intel Fortran (compilation et débogage avec GUI). NO BULLSHIT sur la compilation avec gcc/gfortran dans Linux. J'ai lu des tonnes de telles réponses.

Merci

Peng

Répondre

3

Vous ne seriez pas en mesure d'appeler C++ de Fortran. Fortran n'obéit pas au concept de classe C++, n'a pas le concept de modèles, n'a pas le concept d'exceptions et ne maintient pas correctement les durées de vie des objets C++.

Vous pourriez exposer une interface C à partir de votre code C++, que Fortran pourrait appeler. Vous compileriez un tel code en tant que .dll, puis vous chargeriez et appeleriez des fonctions à l'intérieur de la DLL comme vous le feriez dans n'importe quelle autre DLL. Cependant, vous devriez consulter la documentation de Fortran sur la façon d'appeler les fonctions dans les DLL.

3

Si vous ne souhaitez que les fonctionnalités C de C++, l'approche générale consiste à utiliser extern C dans votre code C++. Ensuite, vous pouvez utiliser la liaison ISO C du côté Fortran et la norme de langage Fortran exige que le Fortran et le C soient interopérables. Dans le Fortran, vous déclarez une interface pour décrire la routine C. Il y a des exemples de code Fortran/C dans le manuel de gfortran ... applicables à tous les compilateurs puisqu'il fait partie du langage. Il y a quelques exemples de Fortran/C dans le manuel Intel sous Intel (R) Fortran/C Programmation en langage mixte. En version imprimée, voir le livre Fortran 95 de Metcalf, Reid et Cohen. Pour les aspects spécifiques aux compilateurs Intel, il existe de nombreuses questions et réponses sur les forums Intel.

0

Le compilateur Fortran ne devrait pas importer car ils sont tous au format objet COFF. Si je comprends bien votre question, vous essayez d'appeler c/C++ à partir de fortran, mais votre principal gui est VS 2008. Puisque votre gui principal est vs 2008, je suppose que votre code source principal est c/C++ et vous voulez appeler un routine fortran qui appelle la routine ac/C++. Étant donné cela, vous devez d'abord compiler vos fonctions c/C++ dans un fichier objet en utilisant VS 2008. Puis compiler votre routine fortran dans un fichier objet référençant ces fonctions c/C++ (avec le fichier objet c/C++) en utilisant le compilateur Intel Fortran . Cela devrait maintenant vous donner un nouveau fichier objet qui combine les fonctions fortran et c/C++. Vous pouvez maintenant utiliser ce fichier objet avec votre code source Visual Studio principal. La chose la plus importante à retenir est que chaque fois que vous compilez le code objet, assurez-vous de lier statiquement les bibliothèques d'exécution. Les commutateurs du compilateur et la syntaxe pour appeler des routines de langage externes, vous devrez le découvrir vous-même, car il y a une tonne de matériel sur Internet. Voici une bonne référence http://docs.cray.com/books/S-2179-52/html-S-2179-52/ppgzmrwh.html