IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

C/Fortran Problème d'interface


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 19
    Points : 5
    Points
    5
    Par défaut C/Fortran Problème d'interface
    Bonjour à tous , voilà j'aimerais appeler des sous routines dans un code C qui elles mêmes sont importées d'une DLL voici mon Code:

    #Main.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    #include "fortran.h"
     
    #pragma comment(lib,"thermodll.lib")
     
    SUBROUTINE EPICIN(CHARACTER DBNAME,INTEGER& IHELPE);
    SUBROUTINE LOADFLU(CHARACTER NAMFLUX,INTEGER& IHELPE);
    SUBROUTINE PHASEQ(CHARACTER NAMFLU8,CHARACTER NAMPRO8,
    				  CHARACTER NAMPHAS8,DOUBLE_PRECISION* FLUX,
    				  INTEGER& I_FLUX,DOUBLE_PRECISION* DEBMOL,
    				  INTEGER& NSMAX1,DOUBLE_PRECISION* DEBPHAS,
    				  INTEGER& I_DEBPHAS,DOUBLE_PRECISION* VLSLS,
    				  INTEGER& NSMAX_2,INTEGER& I_VLSLS,INTEGER& IHELPE);
     
    void epicin(char dbname[80,int IHELPE)
    {
    	CHARACTER DBname(dbname,80);
    	EPICIN(DBname,int IHELPE);
    }
     
    void loadflu(char namflux[8], int ihelpe)
    {
    	CHARACTER Namflux(namflux,8);
        INTEGER Ihelpe=(INTEGER) ihelpe;
     
    	LOADFLU(Namflux,Ihelpe);
    }
     
    void phaseq(char namflu8[8],char nampro8[3], char namphas8[3], double flux[6], double debmol[60], double debphas[4], double vlsls[60][4], int ihelpe)
    {
        int i_flux = 6, i_debmol = 60, i_debphas = 4, i_vlsls_1 = 60, i_vlsls_2 = 4;
     
    	CHARACTER NamFlu8(namflu8,8);
    	CHARACTER NamPro8(nampro8,3);
    	CHARACTER NamPhas8(namphas8,3);
    	DOUBLE_PRECISION  Flux(6);
    	DOUBLE_PRECISION  Debmol(60);
    	DOUBLE_PRECISION  DebPhas(4);
    	FMATRIX<DOUBLE_PRECISION> ARRAY(&vlsls[0][0],i_vlsls_1,i_vlsls_2);
    	INTEGER IHELPE=(INTEGER) ihelpe;
     
     
    	PHASEQ(NamFlu8,NamPro8,NamPhas8,&Flux,i_flux,&Debmol,i_debmol,&DebPhas,i_debphas,ARRAY,i_vlsls_1,i_vlsls_2,IHELPE);
    }
     
    int main()
    {
    	char DBname [80]="tstinter.bdp", Namflux[8]="P";
    	int IHELPE=5, Ihelpe=5;
     
    	epicin(DBname,IHELPE);
    	loadflu(Namflux,IHELPE);
     
    	return 0;
    }
    le code fortran pour l'importation des DLL:
    #routine2.for
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
          SUBROUTINE EPICIN(DBname,IHELPE)
    cDEC$ ATTRIBUTES DLLIMPORT::EPICIN
          CHARACTER*80 DBname
          INTEGER IHELPE
          END
     
    	SUBROUTINE LOADFLU(Namflux, Ihelpe)
    cDEC$ ATTRIBUTES DLLIMPORT::LOADFLU
          CHARACTER*8 Namflux
          INTEGER IHELPE
          END 
     
    	SUBROUTINE PHASEQ(NamFlu8,NamPro8,NamPhas8,Flux,Debmol,
         *    DebPhas,VLSLS,IHELPE)
          Parameter NSMAX=60
    cDEC$ ATTRIBUTES DLLIMPORT::PHASEQ
          CHARACTER*8 Namflu8
          CHARACTER*3 NamPro8
          CHARACTER*3 NamPhas8
          Double precision Flux(6)
          Double precision Debmol(NSMAX)
          Double precision Debphas(4)
          Double precision VLSLS(NSMAX,4)
          INTEGER IHELPE
          END
    Et voici l'erreur que j'obtiens :
    1>Édition des liens en cours...
    1>Main.obj : error LNK2019: symbole externe non résolu _PHASEQ@64 référencé dans la fonction "void __cdecl phaseq(char * const,char * const,char * const,double * const,double * const,double * const,double (* const)[4],int)" (?phaseq@@YAXQAD00QAN11QAY03NH@Z)
    1>C:\Users\Vista Tux\Documents\Visual Studio 2008\Projects\Alexis\Debug\Alexis.exe : fatal error LNK1120: 1 externes non résolus

    Les importations de la DLL sont correctes avec les bon types de paramètres etc...je n'arrive pas à résoudre cette erreur j'ai bien inclus les libs dans mon projet et tout...J'utilise une interface Fortran/C qui est définie dans le fichier fortran.h(des typedef...) mais je suis ouvert si vous avez une idée plus simple pour réécrire ce code

    Merci

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    voir le Forum "Autres Langages" - > "Fortran"

    Deja repondu plusieurs fois...

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    La partie C/C++/whatever de ce code me fait penser à pascal.h...

Discussions similaires

  1. problème utilisation interfaces delphi
    Par desperado dans le forum Delphi
    Réponses: 5
    Dernier message: 13/11/2006, 16h23
  2. Problème d'interface de base de données avec Frontpage
    Par Auxtown-Son dans le forum Outils
    Réponses: 3
    Dernier message: 11/07/2006, 16h42
  3. divers problèmes d'interface
    Par tourlourou dans le forum Delphi
    Réponses: 1
    Dernier message: 27/05/2006, 12h34
  4. Problème en interfacant C et Fortran
    Par karl3i dans le forum MFC
    Réponses: 6
    Dernier message: 23/05/2006, 16h10
  5. [VISUAL EDUTOR] Problème Affichage Interface
    Par mathieu77186 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/03/2006, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo