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 :

error LNK2019: symbole externe non résolu __imp__SDend référencé dans la fonction _main


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 23
    Par défaut error LNK2019: symbole externe non résolu __imp__SDend référencé dans la fonction _main
    Bonjour,

    J'essaie de compiler hdfeos2 testdrivers avec Microsoft Visual Studio 2010 (C++). j'ai suivi a la lettre les instructions mentionnées dans le fichier 'install_HDFEOS_WIN.readme' et j'ai réussi a générer les bibliothèques hdfeosd.lib et gctp.lib. Ensuite en essayant de générer un projet test en utilisant les bibliothèques générées, j'obtient l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur 1 error LNK2019: symbole externe non résolu __imp__SDend référencé dans la fonction _main (testswath.obj)
    Erreur 2 error LNK2001: symbole externe non résolu __imp__SDend	hdfeosd.lib(EHapi.obj)	Test
    J'ai l'impression que le code réussit a faire la liaison avec la bibliothèque générée hdfeosd.lib mais par la suite ne retrouve pas les fonctions dont la définition est inclue dans le fichier 'mfhdf.h'. C'est ce passage par la bibliotheque que je n'arrive pas a comprendre. Et je ne sais plus du coup, si l'erreur se produit au niveau de la génération de la bibliothèque ou plus tard. Je dois ajouter peut être que je réussis a générer la bibliothèque en mettant en fichier de sortie 'bib statique' (.lib) mais la génération échoue si a la place, je mets .dll ou .exe.

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 512
    Par défaut
    Citation Envoyé par annoussa86 Voir le message
    J'ai l'impression que le code réussit a faire la liaison avec la bibliothèque générée hdfeosd.lib mais par la suite ne retrouve pas les fonctions dont la définition est inclue dans le fichier 'mfhdf.h'.
    Vous avez tout à fait raison.

    Si mes souvenirs sont exacte "__imp__" doit indiquer du code de bridge entre la librairie de dll et la dll.

    Je pense qu'il y a embrouille entre les constantes de compilation lors de la compilation de la librairie et de l'exécutable.

    La fonction "SDend" est déclaré comment dans le .h.

    Si c'est vous qui générez la lib de dll, avez vous correctement configurer les constantes de compilation pour l'export des fonctions et non leur import ?

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 23
    Par défaut
    merci pour votre réponse.
    En fait tout ce que je fait est générer la bibliothèque statique 'hdfeos' qui elle même fait appel aux fonctions de 'mfhdf.h'. Donc en construisant la bibliothèque je précise bien les chemins vers HDF4\lib ou se trouve 'mfhdf.lib' et vers HDF4\include ou se trouve 'mfhdf.h' et j'ajoute Hdf4\bin qui contient des dll hdf et mfhdf au path (variables d’environnement).

    A l’intérieur de 'mfhdf.h', les fonctions qui posent problème sont définies ainsi :

    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
    HDFLIBAPI int32 SDstart
        (const char *name, int32 accs);
     
    HDFLIBAPI intn SDend
        (int32 fid);
     
    HDFLIBAPI intn SDfileinfo
        (int32 fid, int32 *datasets, int32 *attrs);
     
    HDFLIBAPI int32 SDselect
        (int32 fid, int32 idx);
     
    HDFLIBAPI intn SDgetinfo
        (int32 sdsid, char *name, int32 *rank, int32 *dimsizes, 
               int32 *nt, int32 *nattr);
    et voici le début de 'SWapi.c' un des 4 fichiers de la bibliothèque a générer hdfeos2

    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
    #include "mfhdf.h"
    #include "hcomp.h"
    #include "cfortHdf.h"
    #include "HdfEosDef.h"
    #include <math.h>
    /* if HDF4 is configured with SZIP */
    #ifdef H4_HAVE_SZLIB_H
    #include "szlib.h"
    #endif
     
     
    #define SWIDOFFSET 1048576
     
     
    int32 SWX1dcomb[512*3];
    int32 SWXSDcomb[512*5];
    char  SWXSDname[HDFE_NAMBUFSIZE];
    char  SWXSDdims[HDFE_DIMBUFSIZE];
    qui donnera plus tard par exemple cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur 5 error LNK2001: symbole externe non résolu __imp__SDendaccess	hdfeosd.lib(SWapi.obj)	Test
    Un autre détail qui me revient et qui pourrait peut être la cause du problème, est que je VS a converti le code au début parce qu'il était généré dans une version antérieure.

    Merci pour votre aide et votre temps !

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Il ne fuat pas préfixer extern "C" pour compiler des fonctions C dans une DLL en C++ ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    C'est peut-être déjà dans le #define de HDFLIBAPI.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/10/2010, 10h23
  2. error LNK2019: symbole externe non résolu
    Par sheep_one dans le forum Windows
    Réponses: 0
    Dernier message: 03/06/2010, 11h03
  3. error LNK2019: symbole externe non résolu
    Par Halloula dans le forum Visual C++
    Réponses: 3
    Dernier message: 28/11/2009, 02h19
  4. error LNK2019: symbole externe non résolu
    Par bugmenot dans le forum Visual C++
    Réponses: 6
    Dernier message: 24/11/2009, 01h02
  5. error LNK2019: symbole externe non résolu "void __cdecl MaFonction
    Par lolo le belge dans le forum Visual C++
    Réponses: 3
    Dernier message: 30/10/2009, 11h38

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