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 :

Erreur de compilation dll x64


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Erreur de compilation dll x64
    Bonjour,
    J'aimerais écrire des dll en 64 bit pour m'en servir dans Python.
    Je suis débutant en c++ mais je butte sur une erreur:
    A la compilation, Code::Blocks me renvoie:

    error LNK2019: symbole externe non résolu
    error LNK2001: symbole externe non résolu

    (le compilateur est visual c++ 2010)

    En compilant avec GNU CGG, aucun problème n'apparaît.

    Même sans modifier le code généré par défaut par Code::Blocs, l'erreur persiste:
    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
    #include "main.h"
     
    // a sample exported function
    void DLL_EXPORT SomeFunction(const LPCSTR sometext)
    {
        MessageBoxA(0, sometext, "DLL Message", MB_OK | MB_ICONINFORMATION);
    }
     
    extern "C" DLL_EXPORT BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
    {
        switch (fdwReason)
        {
            case DLL_PROCESS_ATTACH:
                // attach to process
                // return FALSE to fail DLL load
                break;
     
            case DLL_PROCESS_DETACH:
                // detach from process
                break;
     
            case DLL_THREAD_ATTACH:
                // attach to thread
                break;
     
            case DLL_THREAD_DETACH:
                // detach from thread
                break;
        }
        return TRUE; // succesful
    }
    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
    #ifndef __MAIN_H__
    #define __MAIN_H__
     
    #include <windows.h>
     
    /*  To use this exported function of dll, include this header
     *  in your project.
     */
     
    #ifdef BUILD_DLL
        #define DLL_EXPORT __declspec(dllexport)
    #else
        #define DLL_EXPORT __declspec(dllimport)
    #endif
     
     
    #ifdef __cplusplus
    extern "C"
    {
    #endif
     
    void DLL_EXPORT SomeFunction(const LPCSTR sometext);
     
    #ifdef __cplusplus
    }
    #endif
     
    #endif // __MAIN_H__
    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    À la compilation de la DLL elle-même, tu as des erreurs d'édition de liens?

    Pourrais-tu donner le message d'erreur complet?
    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.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci pour votre rapide réaction, je viens au fait de résoudre mon problème, j'avais oublié de définir MSbuild à 64 bit, excusez moi.
    Par simple curiosité, qu'est ce que le .exp et le .lib que code blocks génère avec la dll?

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Le .lib c'est la bibliothèque statique d'importation, pour utiliser la DLL sans avoir à user et abuser de LoadLibrary et GetProcAddress.
    Le .exp est utile quand certaines DLL ont des dépendances croisées. J'ignore s'il possède un autre usage.
    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.

Discussions similaires

  1. Zedgraph dll: Erreur à la compilation
    Par ndiayebass dans le forum C#
    Réponses: 0
    Dernier message: 27/11/2008, 13h44
  2. [Débutant][D2005] Erreur compilation DLL
    Par waici dans le forum Delphi .NET
    Réponses: 3
    Dernier message: 08/10/2006, 11h42
  3. Erreur compilation DLL dans Eelphi 6
    Par jakouz dans le forum Langage
    Réponses: 2
    Dernier message: 25/05/2005, 16h38
  4. Erreur de compilation lie a une dll
    Par yanndublanche dans le forum C++
    Réponses: 1
    Dernier message: 08/12/2004, 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