2010-09-28 8 views
0

J'ai obtenu un programme qui est un maillage de fortran et de code c. Pour que ce programme puisse être compilé, il nécessite une série de bibliothèques précompilées par le fournisseur du logiciel. Cela inclus entre autres Intel MKL, MPICH2 etc Sur Linux tout fonctionne très bien. Mais sur les fenêtres, je suis coincé:En utilisant Visual Studio combiné avec Intel Fortran, comment résoudre l'utilisation en utilisant différents types de name-mangling

Utilisation de la ligne de commande, je peux compiler le programme en utilisant ifort dans deux des façons suivantes:
[A] ifort/Qlowercase/assumer: ...... Souligner .
[B] ifort/Quppercase/assumer: nounderscore ........

Si je décide de avec option a, je vais obtenir une série de symboles manquants depuis quelques bibliothèques externes est compilé à l'aide de nounderscore majuscule, et je suis incapable de résoudre ces symboles. De même si je vais avec l'option B, d'autres bibliothèques externes vont se plaindre puisqu'elles sont compilées en minuscules avec un trait de soulignement.

Y at-il un moyen de remapper les symboles/fonctions pendant l'état de liaison? Y a-t-il une alternative?

Répondre

1

Si vous utilisez la liaison ISO C dans votre code source Fortran, vous pouvez spécifier exactement le nom de la routine C à appeler. Inclure un trait de soulignement ou non, comme approprié pour la routine particulière. Le "nom de liaison" est également sensible à la casse, vous pouvez donc également contrôler cet aspect des noms de routine. Utilisez ensuite l'option du compilateur afin que le compilateur ne modifie pas les noms.

+0

D'accord, j'ai pris quelques efforts, mais cela a été résolu. En fait avec la liaison ISO, je peux compiler avec toutes sortes de combinaison de mangling. Merci! – Smidstrup

Questions connexes