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 :

Comment lier une application avec une librairie statique ?


Sujet :

Visual C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Comment lier une application avec une librairie statique ?
    Bonjour à tous,

    J'aimerai pouvoir lier de manière statique la librairie GDI de Windows (gdi32.dll) avec une application C++, sous Visual.Net 7.0.
    Je n'ai trouvé aucune option dans Visual !

    Peut-etre ai-je mal cherché, ou est-ce impossible ?

    Merci de vos réponses.

  2. #2
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Moi je utilise toujours GDI+ en statique.
    Dans stdafx.h, ajouter avant #endif

    #include <gdiplus.h>
    using namespace Gdiplus;
    #pragma comment(lib, "gdiplus.lib")

    Un petit code pour commencer et pour s'amuser, à placer dans OnDraw d'un view MFC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    void CGdiPlusView::OnDraw(CDC* pDC)
    {
    	CGdiPlusDoc* pDoc = GetDocument();
    	ASSERT_VALID(pDoc);
     
    	Graphics graphics(pDC->m_hDC);
    	LinearGradientBrush linGrBrush(Point(0, 10),
    								   Point(200, 10),
    								   Color(255, 255, 0, 0),   // opaque red
    								   Color(255, 0, 0, 255));  // opaque blue
     
    	Pen pen(&linGrBrush);
    	graphics.DrawLine(&pen, 0, 10, 200, 10);
    	graphics.FillEllipse(&linGrBrush, 0, 30, 200, 100);
    	graphics.FillRectangle(&linGrBrush, 0, 155, 500, 30);
    }
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Mais là, le P.O demande GDI, pas GDI+.

    De plus, je ne suis pas certain que gdiplus.lib soit vraiment une version statique de GDI+ et non pas simplement une bibliothèque statique d'importation...

    michel_bbm: À ma connaissance, il n'existe pas de version statique de gdi32.dll.
    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.

  4. #4
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    En effet, j'ai mal lu : GDI au lieu de GDI+ !
    Je crois pas que GDI n'est pas du tout à utiliser de manière statique car c'est un DLL de Windows (gdi32.dll), elle se situera toujours dans le répertoire système donc toujours repérable. Le lier statiquement, c'est comme lier kernel32.dll et autres, ne t'inquiètes pas de la portabilité de ton exe !!
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    À ma connaissance, aucune des DLLs système de Windows ne possède un équivalent statique.
    Par contre, certaines bibliothèques Microsoft comme la CRT, MFC et le noyau d'ATL peuvent être liées aussi bien statiquement que dynamiquement.
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci de vos réponses .

    En fait j'avais besoin de tester l'édition de lien statique pour résoudre un problème avec la fonction de GDI : StretBlt() (utilisé pour redimensionner une image, avec sortie imprimante) qui ne fonctionne pas sur certains PC connectés à une imprimante EPSON. Alors qu'elle fonctionne avec d'autres PC connectés à cette meme imprimante !

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Quel rapport avec l'édition de lien statique ou dynamique ?
    La fonction StretchBlt() n'existe qu'en un seul endroit, la DLL GDI32.DLL. Par contre, le fait qu'elle soit supportée ou non par un périphérique ("device") donné doit plutôt dépendre du driver.
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    C'est ce que je pensais aussi : que cela dépendait des drivers, mais les PC que je teste ont le même OS et les meme drivers ! et ils se comportent différement pour la fonction StrechtBlt.
    De plus le code d'erreur retourné (par GetLastError) vaut 87 : ERROR_INVALID_PARAMETER ce qui semblait indiquer un mauvais passage d'argument à la fonction en cause. Alors j'ai pensé qu'une édition de lien statique donnerait peut-etre des meilleurs résultats.

    Je m'arrache les cheveux ...

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. Réponses: 2
    Dernier message: 23/05/2006, 02h40
  5. [MFC ?] lier un javascript avec une application
    Par hiko-seijuro dans le forum MFC
    Réponses: 8
    Dernier message: 10/11/2005, 14h50

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