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

Visual C++ Discussion :

#pragma et compilo VC


Sujet :

Visual C++

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Par défaut #pragma et compilo VC
    Salut tout le monde,
    Bon j'écris ce message car depuis quelques temps je me prend la tete à essayer de faire un programme, et je bloque à un niveau .
    Posage de décors:
    Je fais un Hook pour intercepter un clic sur une fenetre quelconque et tout, je passe par une dll et le tout marche, enfin presque. Le probleme c'est lors de l'interception du clic ça passe un callback créé au préalable et déclaré lors de la création du Hook. Le problème est que dans ce callback j'arrive pas à accéder à des variables externes ou globales. Je suis tombé sur un exemple de hook où le gars il modifie une variable globale mais pour cela il fait une espece de déclaration avec des #pragma que je maitrise pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #pragma data_seg(".maSectionHook")
    	DWORD la_variable = 0;
    #pragma data_seg() 
    #pragma comment(linker, "/SECTION:.maSectionHook,RWS")
    Le problème est que je développe mon truc sous code blocks avec mingw et visiblement ces pragma là il ne semble pas les connaitre .
    Donc je voulais compiler ma dll avec un compilo VC pour tester (puis l'injecter dans mon prog mingw) mais le probleme est qu'apres la compilation il me génère uniquement le .dll et pas le .lib pour l'utiliser avec mingw...
    Alors est ce que quelqu'un peut me confirmer s'il y a bien moyen de faire une dll accompagné de son .lib, et est ce que c'est compatible avec mingw? (d'après la faq de mingw c'est possible, mais bon je me méfies)
    Et est ce que quelqu'un peut me dire en clair ce que fait les pragma parce que là j'y comprend rien
    Merci d'avance

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    c'est effectivement spécifique à VC

    mais par contre, avec un tel source, cela va te générer le .lib
    comment cela se fait-il que tu ne l'ais pas ? il doit etre dans le repertoire release (ou debug)

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Par défaut
    j'ai pourtant cherché mais j'avais que la dll (visual studio express bidul)

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    tu l'as recompilé ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Par défaut
    la honte.. il me manquait un #define DLL_EXPORT __declspec(dllexport)
    mais sinon des réponses sur ce que fait ce pragma?

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    il définit une section de mémoire partagée commune à tous les threads qui utilisent la dll.
    C'est à dire qu'ici le hook est un hook global qui s'installe dans tous les threads de l'application et qui aura un espace de mémoire commun à tous ces threads

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Un define direct comme ça, ce n'est pas conseillé pour de la déclaration de fonctions dans une DLL.
    Pour plus de souplesse, on utilise généralement ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #ifdef BUILDING_NOMDELADLL
    #define NOMDELADLL_API __declspec(dllexport)
    #else
    #define NOMDELADLL_API __declspec(dllimport)
    #endif
    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.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Par défaut
    ok merci, le topis est résolu mais il va falloir que j'en créé un sur "Autres compilateurs" pour savoir comment faire reconnaitre ma dll de VC à mingw

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

Discussions similaires

  1. A propos de #pragma once...
    Par Selenite dans le forum C++
    Réponses: 6
    Dernier message: 03/04/2008, 11h38
  2. option compilo #pragma unknow
    Par kacedda dans le forum Visual C++
    Réponses: 5
    Dernier message: 15/03/2007, 14h15
  3. les "#Pragma" autorisés par le compilo du ddk ?
    Par - Robby - dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 28/02/2006, 12h05
  4. Pragma lib où le mettre ?
    Par Sephi dans le forum MFC
    Réponses: 2
    Dernier message: 16/02/2004, 23h50
  5. #error ,#pragma
    Par Zazeglu dans le forum C
    Réponses: 5
    Dernier message: 01/11/2003, 00h05

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