Maison >développement back-end >C++ >Comment lier les binaires Fortran et C à l'aide de GCC : un guide pour résoudre les erreurs de référence non définies ?

Comment lier les binaires Fortran et C à l'aide de GCC : un guide pour résoudre les erreurs de référence non définies ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-27 03:49:29848parcourir

How to Link Fortran and C   Binaries Using GCC: A Guide to Resolving Undefined Reference Errors?

Lier des binaires Fortran et C à l'aide de GCC

Lier des projets qui utilisent à la fois le code Fortran et C peut être difficile en raison des incompatibilités entre les codes associés bibliothèques. Lorsque vous tentez de compiler et de lier de tels projets à l'aide de g ou gfortran, des erreurs de référence non définies se produisent souvent.

Par exemple, considérez le code suivant :

<code class="fortran">subroutine print_hi() bind(C)
  implicit none
  write(*,*) "Hello from Fortran."
end subroutine print_hi</code>
<code class="cpp">#include <iostream>

extern "C" void print_hi(void);

using namespace std;

int main() {
  print_hi();
  cout << "Hello from C++" << endl;
  return 0;
}</code>

Compiler ces fichiers avec g ou gfortran produit séparément des fichiers objets, mais les relier entre eux à l'aide de g entraîne des références non définies aux bibliothèques Fortran. De même, l'utilisation de gfortran entraîne des références non définies aux bibliothèques C.

Pour résoudre ce problème, il est nécessaire de créer un lien dans les bibliothèques appropriées pendant la phase de liaison. Pour g , cela peut être réalisé en ajoutant l'indicateur -lgfortran à la commande link :

g++ main.o print_hi.o -o main -lgfortran

Cet indicateur créera un lien dans les bibliothèques Fortran nécessaires. Alternativement, gfortran peut être utilisé avec l'indicateur -lstdc pour établir un lien dans les bibliothèques C requises :

gfortran main.o print_hi.o -o main -lstdc++

En spécifiant les indicateurs de liaison appropriés, les programmeurs peuvent lier avec succès des projets qui combinent du code Fortran et C, leur permettant de exploiter les capacités des deux langues dans leurs applications.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn