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++Builder Discussion :

question de débutant sur l'import DLL


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 98
    Points : 48
    Points
    48
    Par défaut question de débutant sur l'import DLL
    Bonjour à tous,
    je suis entrain de "me faire la main" avec C++ Builder. J'utilise dans un programme une DLL (mcHid de Microchip). Jusqu'à présent, ça marchait pour toutes les fonctions importées.
    Je viens d'en rajouter une dont voici la déclaration:

    extern "C" __declspec(dllimport) __stdcall UINT GetHandle(UINT pVendorID, UINT pProductID);

    A la compilation, j'obtiens une erreur :

    [C++ Erreur] Unit1.cpp(74): E2247 '_fastcall TWinControl::GetHandle()' n'est pas accessible
    [C++ Erreur] Unit1.cpp(74): E2227 Paramètre supplémentaire dans l'appel à _fastcall TWinControl::GetHandle()[C++ Erreur]
    [C++ Erreur] Unit1.cpp(74): E2034 Impossible de convertir 'void *' en 'unsigned int'

    Avec mon faible niveau en C++, je comprends que le compilateur interprète mon appel comme un appel à TWinControl::GetHandle(), alors que je veux bien sûr appeler la fonction importée GetHandle déclarée plus haut.

    Est-ce que c'est bien ça et si oui, comment régler le problème puisque évidemment je n'ai pas accès au code de la DLL mcHid ?

    Merci d'avance,

    Robert, newbie en C++ (et C tout court)...

  2. #2
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut,
    GetHandle est une méthode privée de la classe TWinControl
    cette méthode est appellée par la property Handle c'est la raison pour laquelle tu a le premier message d'erreur
    [C++ Erreur] Unit1.cpp(74): E2247 '_fastcall TWinControl::GetHandle()' n'est pas accessible
    la solution vise a donner un autre nom a ta méthode exportée par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern "C" __declspec(dllimport) __stdcall void *   GetChipHandle(UINT pVendorID, UINT pProductID);
    Cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 98
    Points : 48
    Points
    48
    Par défaut
    Merci beaucoup pour cette réponse.
    Du coup, ça amène une autre question:

    comment va se faire le lien entre la fonction déclarée GetChipHandle(UINT pVendorID, UINT pProductID); et la fonction souhaitée qui s'appelle toujours GetHandle dans la DLL ? Je ne vois pas de déclaratoion d'alias ou de quelque chose de semblable...

    Cordialement

    Robert

  4. #4
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    bonsoir,
    tu peux créer un fichier avec une extension .def
    dans le quel tu ajoute les lignes suivantes

    IMPORTS
    getChipHandle(UINT pVendorID, UINT pProductID)=GetHandle(UINT pVendorID, UINT pProductID)

    tu ajoute ce fichier dans ton projet et tu recompile

    cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 98
    Points : 48
    Points
    48
    Par défaut
    Merci,
    du coup, tout s'éclaire...

    Cordialement,

    Robert

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 15/10/2006, 16h52
  2. question de débutant sur les jointures
    Par dreamcocktail dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/03/2006, 15h24
  3. [MySQL] Question de débutant sur l'optimisation d'un site
    Par digger dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/02/2006, 14h29
  4. Question de débutant sur la commande Accept
    Par deaven dans le forum Oracle
    Réponses: 1
    Dernier message: 21/10/2005, 08h25
  5. question de débutant sur les objets
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 06/08/2004, 10h51

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