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 :

Liaison d'une dll Visual C++ dans un programme c++Builder


Sujet :

C++Builder

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 90
    Points : 83
    Points
    83
    Par défaut Liaison d'une dll Visual C++ dans un programme c++Builder
    J'ai essayer de lier à mon programme C++Buider5 une dll compiler à l'aide de Visual C++. Et à chaque fois j'obtient des erreurs dans la mémoire. Les fonctions de la dll tentent de modifier des variables de mon programme sans authorisation. (Comme si la dll partageait la mémoire avec mon programme, mais pas là ou je lui dit)
    Je travaille sous WindowsXP, et la dll à été compilé sous windows 2000.
    J'ai d'abbord essayez de lier la dll grace au point lib. Puis j'ai aussi essayé de la lier à l'aide des fonctions de l'API windows (LoadLibrary et GetProcAddress), mais aucun résultat.

    Merci d'avance pour votre aide!

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Bonjour

    Perso, dans ce cas, je fais un chargement dynamique de la Dll avec LoadLibray et GetProcAddress et ça a toujours très bien fonctionné. As-tu utilisé ta dll avec d'autres programmes sans plante ?
    On manque de renseignements.

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 90
    Points : 83
    Points
    83
    Par défaut
    Oui la dll fonctionne avec des applications Visual C++ et Visual.net

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    As - tu vérifié les options d'alignement des données :
    style :
    On n'y pense pas toujours et ça entraine parfois des problèmes avec des environnements différents.

  5. #5
    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
    regarde cet excellent article
    http://www.bcbdev.com/articles/vcdll2.htm
    il est en Anglais
    cordialement

  6. #6
    Candidat au Club
    Inscrit en
    Novembre 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Il peu exister un autre probleme. Je me suis fait avoir plusieurs fois.

    Les fonctions exportees d'une DLL doivent respecter un convention d'appel ou 'Calling Convention'. Il existe plusieurs types de convention d'appel:
    - stdcall (la plus utilisée), fastcall, fastthis, pascal, cdecl ...
    Suivant le type de convention, les fonctions et leur arguments ne sont pas empilés (et donc depilés) de la meme facon.

    Il faut donc bien verifier que le fichier .h contient devant chaque prototype de fonctions la convention d'appel (ex: void __stdcall foo( .... ) )
    Si cela n'est pas le cas, rajouter celui qui ne fait pas planter votre programme.

    L'alignement des donnes est aussi tres important car il permet d'identifier les adresse memoire des elements des structures (alignement pair par defaut).

    Cordialement, Thomas

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 90
    Points : 83
    Points
    83
    Par défaut
    merci pour vos réponses, je vais essayer de faire ce que vous m'avez proposé, et je vous tiens au courant.

  8. #8
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 90
    Points : 83
    Points
    83
    Par défaut

    Merci à Tous! J'ai résolu le problème grace à vos réponse
    C'était éffectivement un problème de convention d'appel.
    j'utilisais: au lieu de: dans le fichier d'entête.

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

Discussions similaires

  1. utiliser une DLL visual C++ dans projet C#
    Par yozart dans le forum C#
    Réponses: 4
    Dernier message: 12/11/2009, 02h11
  2. Peut on utiliser une DLL DotNEt (C#) dans un programme en C?
    Par Jayceblaster dans le forum Débuter
    Réponses: 12
    Dernier message: 12/02/2008, 17h46
  3. Réponses: 10
    Dernier message: 01/02/2008, 17h14
  4. dll visual basic dans VC++
    Par Nicky dans le forum MFC
    Réponses: 6
    Dernier message: 21/09/2004, 10h57
  5. Appeler une API sans liaison avec une DLL
    Par mat.M dans le forum x86 32-bits / 64-bits
    Réponses: 10
    Dernier message: 13/07/2004, 02h22

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