Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1802 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Utilisation de la librairie standard du C++ aevc pgf90

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Utilisation de la librairie standard du C++ aevc pgf90

n°900399
nathan_g
Posté le 17-11-2004 à 10:11:02  profilanswer
 

Bonjour,
 
Je continue ma découverte des compilateurs Portland pgf90 et pgCC ;)
 
Je rencontre un problème lorsque j'ai des fichiers écrit en C++ et fortran 90 à interfacer :
 
En gros, j'i un programme principal en fortran, qui cherche à calculer la puissance sixième de 2 :
 
      PROGRAM PRINCIPAL
      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
 
      INTEGER PUIS6
      INTEGER A,B
 
      A = 2
      B = PUIS6(A)
       
      END PROGRAM
 
La fonction puis6 qui doit renvoyer la puissance sixième d'un entrier est écrite ainsi :
 
#include "Carre.H"
 
extern "C" int puis6_(int *c)
{
  int d;
  Carre value(*c);
   
  d = (value.puis2())*(value.puis2())*(value.puis2());
   
  return (d);
}
 
On crée donc un objet value, de la classe Carre. L'une des méthodes propre à cette classe est " puis2() " qui renvoie la puissance 2 (ie. le carré) de la variable entrée dans le constructeur :
 
Ainsi Carre.H s'écrit :
 
#ifndef CARRE_H
#define CARRE_H
 
class Carre
{
 public:
   
  Carre(int a)
  {_valeur = a;}
   
  int puis2();
   
protected:
   
  int _valeur;
};
 
#endif
 
et Carre.C :
 
#include <iostream.h>
#include "Carre.H"
 
int Carre::puis2()
{
  int alpha;
 
  alpha = _valeur*_valeur;
 
  cout << "alpha = " << alpha << endl;
   
  return (alpha);
}
 
Le problème que je rencontre est ce dernier affichage de la valeur alpha. En effet, je compile successivement par :
 
pgCC -c *.C
pgf90 -c *.f
pgf90 -O -o principal *.o -lstd -lC -L/usr/local/pgi-3.2/linux86/lib
 
Le répertoire /usr/local/pgi-3.2/linux86/lib contenant les différentes libraries propre à C++, selon moi.
 
La compilation s'arrête à l'édition de liens par :
 
Carre.o: In function `Carre::puis2(void)':
Carre.o(.text+0x38): undefined reference to `std::__ls__tm__30_Q2_3std20char_traits__tm__2_c(std::basic_ostream<char,> &, char const *)'
 
Il semble donc que la librairie standard du C++ ne soit pas trouvée. Pourtant, si l'affichage d'une valeur par une commande similaire (en cout << ... << endl;), s'était fait à l'intérieur de la fonction puis6 et non dans la méthode puis2, la compilation aurait fonctionnée et l'éxécutable pouvait être lancé.
 
D'où viens ce problème apparemment typique d'une compilation avec pgf90 de fichiers C++.
 
D'avance merci de votre réponse,
 
Nathan
 

mood
Publicité
Posté le 17-11-2004 à 10:11:02  profilanswer
 

n°900414
nathan_g
Posté le 17-11-2004 à 10:30:44  profilanswer
 

en fait, il semble que ce ne soit pas tant l'affichage d'une valeur qui pose problème que celle d'une chaine de caractère (le "alpha = " ne semble pas accepté dans la ligne d'écriture).
 
Il faut lire également, à la place des animations :
 
Carre :: puis2()


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Utilisation de la librairie standard du C++ aevc pgf90

 

Sujets relatifs
utilisation fonction perso sous excelUtilisation des composants Indy 9 sous C++ Builder
pb de filets noires avec la librairie GD[resolu][batch] saisie param + appel ftp + utilisation ds ftp du param saisi
Utilisation d'un jar situe a l'interieur d'un autre jarquelle librairie graphique multiplateforme ???
Lib pdf gratuite pour utilisation pro? [trouvé][C] Problème de librairie ...
Utilisation d'une redirection en utilisant une commande JS[VBScript] Utilisation des Array
Plus de sujets relatifs à : Utilisation de la librairie standard du C++ aevc pgf90


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR