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

Code::Blocks Discussion :

Utiliser une .dll .lib de VC sous C::B+mingw


Sujet :

Code::Blocks

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2004
    Messages : 410
    Points : 355
    Points
    355
    Par défaut Utiliser une .dll .lib de VC sous C::B+mingw
    Bonjour, je développe un truc en wxwidgets sous code::blocks avec mingw.
    Mon problème est le suivant, j'ai une dll (accompagnée de son .lib) compilée par visual 2005 express, j'aimerais savoir comment je peux faire pour linker mon projet en mingw avec cette librairie. J'ai une message d'erreur lors du link du style
    "undefined function HOOK(..)" j'ai pas l'erreur exacte sous le nez, mais d'ici ce soir (chez moi) j'éditerai le post pour la donner. Est ce que l'un d'entre vous a déja eu à faire à ce genre de chose?
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    avril 2005
    Messages
    2 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : avril 2005
    Messages : 2 399
    Points : 4 732
    Points
    4 732
    Par défaut
    je pense que tu dois télécharger les sources de wxWidget et les compiler avec minGW pour générer une bibliothèque .lib et une dll compatibles avec minGW :
    http://www.wxwidgets.org/downloads/

    ce qui est sûr c'est que le .lib visual express 2005 n'est pas compatible avec un autre compilateur que visual express 2005
    je pense même qu'il n'est pas compatible avec une autre version de visual
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2004
    Messages : 410
    Points : 355
    Points
    355
    Par défaut
    c'est pas exactement ça mon probleme, mais tu as répondu en partie, en fait ma librairie wxwidgets elle est compilée avec mingw j'ai pas de probleme avec ça. En fait c'est une dll que je chercher à créer (un Hook) et je dois la faire sous visual à cause d'une histoire de #pragma que mingw ne comprend pas. Mais là où tu m'apporte un élément de réponse c'est que tu me dis que les lib de visual express 2005 ne sont compatibles qu'avec VS express 2005 meme pas avec les autres visual... à plus forte raison je n'arriverai pas à faire reconnaitre mon hook à mingw
    je vais essayer d trouver un compilo VS c++ 6.0 à l'ancienne...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2004
    Messages : 410
    Points : 355
    Points
    355
    Par défaut
    Est ce qu'un linkage dynamique de ma librairie pourrait résoudre mon probleme, meme avec visual 2005? je sais pas si ça vaut la peine de s'y pencher ou pas, ou si ilo faut que je cherche quelqu'un qui pourrait me compiler ma lib proprement pour etre reconnue avec mingw?

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

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

    Informations forums :
    Inscription : septembre 2005
    Messages : 27 063
    Points : 40 241
    Points
    40 241
    Par défaut
    J'ai lu sur ce même forum que les .obj et les .lib étaient compatibles avec les .o et les .a.
    Ce qui peut ne pas être compatible par contre, c'est le name mangling C++, qui dépend des compilateurs: Seule l'interface C des fonctions est standard sour Windows.
    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
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    avril 2005
    Messages
    2 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : avril 2005
    Messages : 2 399
    Points : 4 732
    Points
    4 732
    Par défaut
    Citation Envoyé par reptils
    [...]je dois la faire sous visual à cause d'une histoire de #pragma que mingw ne comprend pas.
    Si l'origine de ton problème est un pragma, tu pourrais peut-etre essayer de le résoudre ? à moins que tu ais déjà essayé sans succès

    tu peux mettre la ligne du pragma que mingw ne comprend pas ?
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2004
    Messages : 410
    Points : 355
    Points
    355
    Par défaut
    bon alors je pose le cadre de mon probleme... je suis en train de dével un virtual desktop un peu à la linux. Donc là où ça ne va pas c'est dans mon Hook, il fait deux trucs ce hook (en fait il y a 2hooks), la premiere chose est d'intercepter la création/destruction de nouvelles fenetre de windows afin de modifier (création) le menu system et de rajouter une entrée lorsqu'on fait clic droit sur la barre des titres. Cette entrée c'est un item "Déplacer vers >>" avec un sous menu:
    "Bureau 1"
    "Bureau 2"
    ... .
    donc ça marche. Le deuxieme hook est là pour intercepter qu'on a cliqué sur l'un des item de bureau, dans le but de déplacer les fenêtres dans ces bureaux. Le probleme est que cette interception est un callback du hook et que dans ce callback les variables globales sont vu à NULL, meme si j'initialise ces variables avant. Le seul truc que je peux faire lorsque j'intercept un clic c'est faire un messagebox("vous avez cliqué sur bureau1") mais par contre changer une variable ça ne marche pas . J'ai trouvé un exemple sur le net où le gars il arrive à changer l'état de sa variable en utilisant les #pragma en question du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #pragma data_seg(".maSectionHook")
    	DWORD dernierCpt = 0; //variable à modifier lors de l'interception du hook
    #pragma data_seg()
    #pragma comment(linker, "/SECTION:.maSectionHook,RWS")
    et comme par hazard il utilise visual
    et moi ça marche pas avec mingw
    alors si comme tu dis il y aurait une autre solution je suis preneur.
    J'espere que je suis clair

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    27 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : septembre 2005
    Messages : 27 063
    Points : 40 241
    Points
    40 241
    Par défaut
    Si tu n'as pas besoin de vitesse, et que tu es admin de ta machine, tu peux essayer avec une zone de mémoire partagée nommée...
    Un FileMapping nommé dont le nom commence par "Global\", qui serait donc accessible sous ce nom par n'importe quel process...
    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.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2004
    Messages : 410
    Points : 355
    Points
    355
    Par défaut
    Citation Envoyé par Médinoc
    Si tu n'as pas besoin de vitesse
    Ben c'est un p'ti utilistaire qui fait des opérations très simples sur une petite liste chainée (aussi grande que le nombre de fenetres) donc la vitesse bof pas besoin
    Citation Envoyé par Médinoc
    et que tu es admin de ta machine
    Là j'aimerais bien me dispenser de se problème, je souhaite mettre mon prog dispo pour tous une fois finalisé, donc dispo pour tout type d'utilisation sur une machine
    Citation Envoyé par Médinoc
    tu peux essayer avec une zone de mémoire partagée nommée...
    Un FileMapping nommé dont le nom commence par "Global\", qui serait donc accessible sous ce nom par n'importe quel process...
    j'y connais rien je veux bien tester, mais à condition que je trouve une solution pour cette histoire d'etre admin

    EDIT: et pour le chargement dynamique?

  10. #10
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    avril 2005
    Messages
    2 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : avril 2005
    Messages : 2 399
    Points : 4 732
    Points
    4 732
    Par défaut
    les pragmas sont résolus à la compilation normalement
    tu dis que ça ne marche pas mais tu n'as pas d'erreur du compilateur ?
    (j'imagine que non puisque tu dis que les variables ne sont pas modifiées)

    le problème pourrait être lié à l'utilisation d'un segment mémoire non partagé, les données sont hors limite et donc inaccessibles
    je suis pas du tout calé là dedans par contre je ne sais pas si c'est pas un problème que tu pourrais résoudre dans la configuration du compilo

    le mieux étant peut-etre finalement de rester sous visual vu comment c'est spécifique
    mais ça m'étonnerai que tu ne puisse pas le faire sous mingw
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2004
    Messages : 410
    Points : 355
    Points
    355
    Par défaut
    je suis tombé sur ça http://perso.orange.fr/bardou/michel/hook/hooks.htm en fat c'est un pote qui m'a envoyé le lien.. en tout cas il n'est pas mentionné d'etre en administrateur ça m'arrange. Lorsque j'aurai 2 minutes je regarderai ça de pres

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2004
    Messages : 410
    Points : 355
    Points
    355
    Par défaut
    j'ai toujours pas trouvé le temps de regarder ça en ce moment je suis à fond sur mon prog winsplit http://reptils.free.fr

Discussions similaires

  1. utiliser une dll sous visual 2008 c++
    Par milach dans le forum Visual C++
    Réponses: 4
    Dernier message: 11/01/2010, 18h36
  2. Utiliser une DLL Matlab sous Delphi
    Par airefrais dans le forum Langage
    Réponses: 4
    Dernier message: 24/07/2009, 11h16
  3. comment utiliser une dll et un .lib?
    Par isoman dans le forum Visual C++
    Réponses: 2
    Dernier message: 01/07/2008, 13h36
  4. [.NET] utiliser une dll c++ sous excel
    Par ooxoo dans le forum VC++ .NET
    Réponses: 7
    Dernier message: 04/04/2008, 10h43
  5. Utiliser une DLL sans le .LIB dans Visual Studio 2005
    Par lekernel dans le forum Visual C++
    Réponses: 5
    Dernier message: 02/08/2007, 09h54

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