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
    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é
    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
    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
    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
    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é
    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
    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
    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
    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é
    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
    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
    j'ai toujours pas trouvé le temps de regarder ça en ce moment je suis à fond sur mon prog winsplit http://reptils.free.fr

###raw>template_hook.ano_emploi###