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

Windows Discussion :

creation d'une dll appelant une autre librairie


Sujet :

Windows

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 240
    Points : 145
    Points
    145
    Par défaut creation d'une dll appelant une autre librairie
    Bonjour,

    j'essaie de creer une dll qui possede 2 fichiers, dont l'un appelle des methodes d'une autre dll.
    j'arrive à compiler ces deux fichiers.

    mais en essayant de creer la dll, il me plante en me disant qu'il ne trouve les methodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    g++ -shared -mno-cygwin -Wl,--add-stdcall-alias -L%LIB% fichier1.o fichier2.o  -o c:\windows\malib_wrapped.dll
    
    avec %LIB% : chemin ou se trouve les fichier LIB et A
    si quelqu'un a une idée je suis preneur...

  2. #2
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 240
    Points : 145
    Points
    145
    Par défaut
    bonjour,

    je me permets de relancer ce topic car franchement je suis aux bord de la crise de nerfs

    j'ai déjà crée une dll avec la commande donné precedemmentet c'est passé tout seul... mais il est vrai que je n'appellé jamais de librairie externe...

    Bien entendu je ne recherche pas une reponse tout faite... simplement des axes de reflexions... j'ai essayé pas mal de commande différente et rien n'y fait...

    Petit détail que j'ai oublié de preciser : bien entendu la dll appellée est dans le PATH de windows (c:\windows). d'ailleurs j'arrive à l'appellé dans un main()...

    Bonne journée et merci d'avance

  3. #3
    Membre actif Avatar de Nyarlathotep
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 174
    Points : 217
    Points
    217
    Par défaut
    Si tu pouvais envoyer le Makefile complet et les erreurs reçues (précisement) ça nous aiderait peut-être. De plus, je n'est pas très bien compris ton problème , si tu pouvais le reformuler, ça serait pas mal.

    Si ton problème est d'appeler une DLL sans le lib :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    HMODULE WINAPI LoadLibrary(
      LPCTSTR lpFileName
    );
    //Charge une DLL en mémoire
    
    FARPROC WINAPI GetProcAddress(
      HMODULE hModule,
      LPCSTR lpProcName
    );
    //Recupère une focntion dans la DLL en fonction de son nom
    
    //Voir MSDN
    "That is not dead which can eternal lie
    And with strange aeons even death may die"

    The Call of Cthulhu

  4. #4
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 240
    Points : 145
    Points
    145
    Par défaut
    merci de ta reponse...

    en fait je dois faire une application java qui appelle des objets d'une librairie C++. J'ai utilisé SWIG pour wrapper mon application.

    A la fin de mon processus, je me retrouve avec des classes java, un fichier xxx_wrap.cpp et un fichier cpp qui appelle les methodes de ma librairie.

    je dois creer une dll contenant les 2 fichiers cpp afin de pouvoir l'appellé avec les fonctions natives java.

    quand j'essaie de construire ma dll, le compilo me ressort des erreurs style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    undefined reference to `method_xxx'
    et il y en a a peu pres 500 et toujours les meme...

    le soucis vient qu'a priori, le linker ne trouve pas la dll, alors qu'elle est dans mon path et que je lui ai donné mon .lib...

    A bientot

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 240
    Points : 145
    Points
    145
    Par défaut
    mes precisions sont elles suffisantes?

    edit : rassurez moi... c'est possible de faire ce genre de truc? créer une dll dont les methodes appellent des fonctions d'une autre dll?

  6. #6
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 240
    Points : 145
    Points
    145
    Par défaut
    j'ai reussi

    en fait il suffisait de rajouter la dll comme un fichier.o !

    en fait ca donne comme commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ -shared -dll fichier1.o fichier2.o malib.dll  -o ma_nouvelle_lib.dll

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

Discussions similaires

  1. Appeler une Dll dans une autre Dll.
    Par cdumargu dans le forum C#
    Réponses: 1
    Dernier message: 07/02/2012, 13h13
  2. Appeler une dll ou un autre module vba depuis une macro excel vba
    Par technobiz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/11/2008, 14h24
  3. Appeler une unité depuis une DLL
    Par xavier ringoise dans le forum Langage
    Réponses: 2
    Dernier message: 03/02/2006, 21h31
  4. Réponses: 2
    Dernier message: 31/08/2005, 16h12
  5. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30

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