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

GTK+ avec C & C++ Discussion :

deploiment de code sur plusieurs machines et problème avec une dll


Sujet :

GTK+ avec C & C++

  1. #1
    Membre régulier
    Homme Profil pro
    chercheur
    Inscrit en
    Décembre 2012
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Décembre 2012
    Messages : 195
    Points : 84
    Points
    84
    Par défaut deploiment de code sur plusieurs machines et problème avec une dll
    Bonjour,

    Je suis en train de déployer mon code sur plusieurs machines windows, qui ne sont pas celles sur lesquelles ce code a été compilé, et qui ne possède même pas de compilateur.

    Pour ce faire, j'ai posé sur ces machines le GTK runtine environment que j'ai trouvé ici.

    Tout marche très bien, sauf sur une des machines, qui tourne sous Windows XP (et elle n'est pas la seule sous XP). Sur celle-ci, j’obtiens le message d'erreur suivant:

    "Le point d'entrée de procédure deflateSetHeader est introuvable dans la bibliothèque de liaisons dynamique zlib1.dll".

    J'ai beau chercher sur le web, je ne trouve pas de solutions, même si je constate ne pas avoir été le seul à être face à cette difficulté.

    L'un (l'une) d'entre vous aurait une idée de comme se sortir de ce problème ? Merci pour toute aide sur ce point.

    Cordialement,

    Eric.

  2. #2
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Dans mes souvenirs, quand j'avais testé avec MinGW, il me semble que le fait d'avoir les paquets de développement de la zlib faisait qu'elle était détectée lors de la compilation, et qu'un des composants l'ajoutait automatiquement à ses dépendances lors de l'appel à "./configure". Tu te retrouves alors avec une dépendance à la zlib, que tu dois distribuer situ veux que ton programme fonctionne. Vérifie donc tes scripts de détection de dépendances.

    Jette aussi un coup d'oeil à tes dll avec l'outil Microsoft "dependency walker", tu verras quelle bibliothèque tire cette dépendance. Tu peux ensuite voir si tu as moyen de retirer la dépendance à la zlib, en recompilant ce composant si nécessaire. Tu as sans doute une option de configuration pour compiler sans zlib, du genre ./configure --disable-zlib ou --without-zlib. À voir dans le ./configure ---help.

  3. #3
    Membre régulier
    Homme Profil pro
    chercheur
    Inscrit en
    Décembre 2012
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Décembre 2012
    Messages : 195
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par liberforce Voir le message
    Dans mes souvenirs, quand j'avais testé avec MinGW, il me semble que le fait d'avoir les paquets de développement de la zlib faisait qu'elle était détectée lors de la compilation, et qu'un des composants l'ajoutait automatiquement à ses dépendances lors de l'appel à "./configure". Tu te retrouves alors avec une dépendance à la zlib, que tu dois distribuer situ veux que ton programme fonctionne. Vérifie donc tes scripts de détection de dépendances.

    Jette aussi un coup d'oeil à tes dll avec l'outil Microsoft "dependency walker", tu verras quelle bibliothèque tire cette dépendance. Tu peux ensuite voir si tu as moyen de retirer la dépendance à la zlib, en recompilant ce composant si nécessaire. Tu as sans doute une option de configuration pour compiler sans zlib, du genre ./configure --disable-zlib ou --without-zlib. À voir dans le ./configure ---help.
    Merci pour ce post. J'ai regardé avec dependency walker. zlib1.dll est sous la dépendance de libcairo-2.dll. Et effectivement, il y a bien une fonction deflateSetHeader qui est invoquée dans cette library. Je ne vois pas comment recompiler sans cette dépendance.

    dependency walker permet de double-clicker sur cette fonction, et ca renvoi (intelligement) aux discussions correspondantes sur le web. L'histoire serait (évidement) que le gtk runtime environement installe une dll pas assez récente qui ne contiendrait pas cette fonction. C'est bizarre, car ca marche très bien sur d'autres machines.

    Une piste serait de trouver un gtk runtime environment plus récent que celui que j'utilise (dont le lien est dans mon post d'origine). Je n'en ai pas trouvé.

    Voici où j'en suis.

    Cordialement, Eric.

  4. #4
    Membre confirmé
    Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 330
    Points : 607
    Points
    607
    Par défaut
    Bonjour,
    J'ai eu le même problème il y a longtemps et je ne me souviens plus des détails de ma démarche, mais je suis parvenu à une configuration qui marche.
    Tu trouvera les DLL utiles dans le répertoire bin du paquetage gracegtk-0.8.2_bin.zip
    sur http://sourceforge.net/projects/gracegtk/files
    Je compile sous XP et il semble que le résultat marche sur toutes les versions de Windows.
    Je me demande d'ailleurs ce qui va se passer quand Microsoft va abandonner le support de XP car j'ai peur que cette compatibilité ascendante en fasse les frais.
    Faudra-t-il alors distribuer deux versions: une pour XP et l'autre pour Vista et les autres?

  5. #5
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Windows XP, c'est un peu comme Flash. Il y a un moment où il faut que ça crève.

    eric1708, je viens de voir le bundle que tu utilises, je pense que le soucis vient de là. Prends les bundles à la source, sur le site de GTK, pas sur sourceforge. Je suis à peu près sûr que le bundle de http://www.gtk.org n'a pas cette dépendance à la zlib.

    La version dispo est la 2.24.10, comme celle que tu utilises (qui a d'ailleurs un soucis majeur de fuite mémoire, mais c'est une autre histoire). Il y aura peut être bientôt une version plus récente dispo au téléchargement (croisons les doigts), mais en attendant, utilise la 2.24.10 de gtk.org.

  6. #6
    Membre régulier
    Homme Profil pro
    chercheur
    Inscrit en
    Décembre 2012
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Décembre 2012
    Messages : 195
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par liberforce Voir le message
    Windows XP, c'est un peu comme Flash. Il y a un moment où il faut que ça crève.

    eric1708, je viens de voir le bundle que tu utilises, je pense que le soucis vient de là. Prends les bundles à la source, sur le site de GTK, pas sur sourceforge. Je suis à peu près sûr que le bundle de http://www.gtk.org n'a pas cette dépendance à la zlib.

    La version dispo est la 2.24.10, comme celle que tu utilises (qui a d'ailleurs un soucis majeur de fuite mémoire, mais c'est une autre histoire). Il y aura peut être bientôt une version plus récente dispo au téléchargement (croisons les doigts), mais en attendant, utilise la 2.24.10 de gtk.org.
    Merci, on avance.

    Je ne suis pas en 2.24.10. Suite à ton expertise, liberforce, j'avais downgradé ma version en 2.24.0, justement en raison de ce problème de fuite mémoire (la discussion correspondante est ici).

    Bon, ok, je soupçonnais bien que le gtk runtime environment que j'avais récupéré n'était pas le bon.

    Je viens bien récupérer le bundle sur gtk.org, mais je ne sais pas comment le poser. Je ne veux rien recompiler. Je veux juste distribuer du code compilé sur une autre machine. Ce que j'ai fait déjà plusieurs fois sans problème sur d'autres machines.

    En clair, quoi récupérer sur le site gtk.org, et comme l'installer ?

    Le gtk runtime environment que j'ai est bien pratique. C'est un executable qui installe (normalement) tout aux bons endroits...

    Encore merci pour votre temps.

    Eric.

  7. #7
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Extrait de : http://www.gtk.org/download/win32.php

    All-in-one bundles

    If you find choosing, downloading and unpacking the individual zip archives below a chore, there is an all-in-one bundle of the GTK+ stack including 3rd-party dependencies. The bundle contains both run-time and developer files. Many of the developer files are relatively irrelevant. If you intend to redistribute the GTK+ run-time, you need to figure out which files you can leave out yourself. A new bundle will ideally be provided here whenever one of the member packages has been updated..
    En gros: le bundle = fichiers de développement + fichiers pour exécuter. Les fichiers pour exécuter, c'est ce qu'on appelle le runtime. Pour déployer, tu n'as donc besoin que du runtime sur tes machines. Pas besoin d'installateur, une application GTK sous Windows doit fournir sa propre version de GTK avec elle. C'est nécessaire car tu n'as pas de système de gestion de dépendance, et qu'une application peut avoir besoin d'une version donnée de GTK et une autre application peut avoir besoin d'une autre version. Donc tu décompresses juste le runtime dans le dossier de ton application, et tu t'assures qu'elle va chercher les dll à cet endroit.

    La difficulté c'est que sur gtk.org, on te fournit un bundle fichiers de développement + runtime, mais pas de bundle juste avec les runtime. À la place ils te filent les runtime de chaque bibliothèque séparément, et tu fais ton marché toi même, en prenant ce qui t'intéresse. Le soucis, c'est que bien souvent les gens ne savent pas ce qui les intéresse, même s'ils sont développeurs. Donc soit tu prends le bundle et tu vires les fichiers qui ne servent pas (mais tu risques de te gourer ou de laisser des choses inutiles), soit tu télécharges séparément les runtimes de chacun des composants (gtk + ses dépendances), et tu décompresses le tout dans le même dossier. Tu peux ensuite te faire une archive compressée du résultat, et tadaaa ! tu as ton bundle-runtime que tu distribueras en même temps que ton application.

    À ce sujet, je me suis gaufré, zlib est bien listé dans les dépendances... Il est donc nécessaire, même pour le build officiel.

  8. #8
    Membre régulier
    Homme Profil pro
    chercheur
    Inscrit en
    Décembre 2012
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Décembre 2012
    Messages : 195
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par liberforce Voir le message
    Extrait de : http://www.gtk.org/download/win32.php
    La difficulté c'est que sur gtk.org, on te fournit un bundle fichiers de développement + runtime, mais pas de bundle juste avec les runtime. À la place ils te filent les runtime de chaque bibliothèque séparément, et tu fais ton marché toi même, en prenant ce qui t'intéresse. Le soucis, c'est que bien souvent les gens ne savent pas ce qui les intéresse, même s'ils sont développeurs. Donc soit tu prends le bundle et tu vires les fichiers qui ne servent pas (mais tu risques de te gourer ou de laisser des choses inutiles), soit tu télécharges séparément les runtimes de chacun des composants (gtk + ses dépendances), et tu décompresses le tout dans le même dossier. Tu peux ensuite te faire une archive compressée du résultat, et tadaaa ! tu as ton bundle-runtime que tu distribueras en même temps que ton application..
    (désolé pour ma réponse tardive, mais le serveur gtk était en rideau depuis plusieurs jours. A présent ca remarche..).

    Ok, problème résolu. En fait il y avait deux problèmes sur ma machine.

    1) effectivement les dll que j'avais posées étaient trop anciennes. Je suis allé sur le serveur gtk et ai reconstruit comme indiqué un environment runtime from scratch. Ok.

    2) l'emplacement de tout ceci sur ma machine était déclaré dans une variable PATH en aval d'autres directories qui contenant des dll de même nom plus anciennes. Un peu de remise dans le bon ordre a résolu tout ca.

    Encore merci pour votre aide sur ce point.

    Cordialement,

    Eric.

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

Discussions similaires

  1. [Exécution] Problème avec une DLL
    Par poukill dans le forum C++
    Réponses: 20
    Dernier message: 28/08/2008, 19h47
  2. Problème avec une DLL construite en Delphi
    Par steph_1 dans le forum Langage
    Réponses: 6
    Dernier message: 24/01/2008, 10h01
  3. Problème avec une Dll
    Par nnj dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/04/2007, 19h36
  4. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22
  5. Problème avec une DLL
    Par SER dans le forum Langage
    Réponses: 7
    Dernier message: 23/08/2005, 13h58

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