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 :

Ne pas distribuer les DLL système avec son prog ?


Sujet :

Visual C++

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut Ne pas distribuer les DLL système avec son prog ?
    Bonjour,

    J'ai créer un petit programme sous Visual C++ 2005 Express lié aux wxWidgets pour l'IHM. Je me penche ici sur la compilation et le link en DEBUG.

    Les options sont les suivantes :
    Type de configuration : Application (.exe)
    Utilisation des MFC : Utiliser les bibliothèques Windows standard

    Donc pas de MFC, evidemment.
    Dans l'onglet C++ / Generation de code

    J'ai mis Bibliothèque runtime : Débogage Multithreaded au lieu de DLL de débogage multithread (/MDd).

    Pour faire ca j'ai en fait suivi les explication que j'ai trouvées dans la FAQ :
    http://c.developpez.com/faq/vc/?page...stributeMFCApp

    Bref, avec tout ca je pense que je peux compiler et livrer mon programme sans les DLL système.
    Mais, j'ai plein d'erreur de link, du genre :

    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
     
    Édition des liens en cours...
    MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _free déjà défini(e) dans LIBCMTD.lib(dbgheap.obj)
    MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _wcslen déjà défini(e) dans LIBCMTD.lib(wcslen.obj)
    MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _iswdigit déjà défini(e) dans LIBCMTD.lib(_wctype.obj)
    MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _iswalnum déjà défini(e) dans LIBCMTD.lib(_wctype.obj)
    MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _malloc déjà défini(e) dans LIBCMTD.lib(dbgheap.obj)
    MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _calloc déjà défini(e) dans LIBCMTD.lib(dbgheap.obj)
    MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _memmove déjà défini(e) dans LIBCMTD.lib(memmove.obj)
    MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _tolower déjà défini(e) dans LIBCMTD.lib(tolower.obj)
    MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _strchr déjà défini(e) dans LIBCMTD.lib(strchr.obj)
    MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _isspace déjà défini(e) dans LIBCMTD.lib(_ctype.obj)
    MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _mbstowcs déjà défini(e) dans LIBCMTD.lib(mbstowcs.obj)
    MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _iswalpha déjà défini(e) dans LIBCMTD.lib(_wctype.obj)
    MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: __swprintf déjà défini(e) dans LIBCMTD.lib(swprintf.obj)
    MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _realloc déjà défini(e) dans LIBCMTD.lib(dbgheap.obj)
    Alors, il faut que je link statiquement avec les MFC, d'après la FAQ. Mais comment faire ? Quel lib dois-je inclure ds les settings de mon projet ?

    Merci pour votre aide.

    Bye

  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
    Points : 16 075
    Points
    16 075
    Par défaut
    on ne distribue pas un prog en debug

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    ben çà dépend... défois ya que la version debug qui tourne correctement

  4. #4
    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
    Dans ce cas, c'est que le programme est indigne d'etre distribué.
    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.

  5. #5
    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
    Points : 16 075
    Points
    16 075
    Par défaut
    vaut mieux corriger alors

  6. #6
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut
    Ok, j'ajoute cette option à ma compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /NODEFAULTLIB:libcmt.lib
    Ce qui ne me cause plus qu'une seule erreur de link :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CMainFrame.obj : error LNK2001: symbole externe non résolu "public: void __thiscall wxStringData::Free(void)" (?Free@wxStringData@@QAEXXZ)
    F:\Productions personnelles\prog\Crypta\Crypta\Release\Crypta.exe : fatal error LNK1120: 1 externes non résolus
    Mais celle-ci, je ne vois pas quelle lib inclure sachant que j'ai deja inclu toutes les libs wxwidgets necessaires a ma compilation :-(

    Merci pour votre aide

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    le probléme est de savoir quel type de projet tu réalises...
    je vois une référence a CMainFrame donc MFC et aprés tu parles de wxwidgets.. tu mélanges les deux ?
    les MFC sont liées statiquement ?
    comment est la liée la CRT dans le projet et les differentes lib ?
    je rajoute que si tu utilises vc2005 express tu ne peux pas utiliser les MFC.

  8. #8
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par farscape
    le probléme est de savoir quel type de projet tu réalises...
    je vois une référence a CMainFrame donc MFC et aprés tu parles de wxwidgets.. tu mélanges les deux ?
    les MFC sont liées statiquement ?
    comment est la liée la CRT dans le projet et les differentes lib ?
    je rajoute que si tu utilises vc2005 express tu ne peux pas utiliser les MFC.
    Bah non rien du tout. CMainFrame c'est une convention de nommage. J'aurai pu l'appeler TOTOMainFrame c'est vrai !
    C'est parce que je me base sur une norme de codage qui me dit
    IFichier pour les interfaces (classes abstraites)
    CFichier pour les IHM
    TFichier pour les classes instanciées.

    C'est vrai que j'ai pas fait le rapprochement avec les MFC.
    Pour répondre a tes questions :
    1) Non les MFC ne sont pas liés statiquement. J'ai juste précisé l'option :
    Utilisation des MFC : Utiliser les bibliothèques Windows standard
    Donc pas de MFC.

    2) Par ailleurs j'utilisais l'option de compilation "Use Multithreaded" au lieu de "DLL Multithreaded" par default.

    Et c'est effectivement ce qui pose problème car lorsque je mets "Dll Multithreaded", je n'ai plus d'erreur de links avec les wxWidgets !!

    Bref ca fonctionne !

  9. #9
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par nico-pyright(c)
    on ne distribue pas un prog en debug

    [modéré]

    Ca fait la meme chose en debug qu'en release, enfin, ca faisait.... puisque c'est resolu !

    [modéré]

    En tout cas si c'est pour me dire qu'en debug on distribue pas un programme, ca ne sert a rien de poster ! J'ai bien le droit de me le distrribuer a moi meme, en debug, non ?

    Bye et bonne continuation a tous.

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

Discussions similaires

  1. Sql developer : ne pas afficher les tables système
    Par identifiant_bidon dans le forum Sql Developer
    Réponses: 5
    Dernier message: 05/02/2014, 16h17
  2. Distribuer les applications Vb6 avec InnoSetup
    Par Hydatid dans le forum Installation, Déploiement et Sécurité
    Réponses: 5
    Dernier message: 09/04/2009, 23h13
  3. Réponses: 2
    Dernier message: 09/01/2007, 11h29
  4. [CR] créer 1 setup contenant tte les dll pr pas installer CR
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/10/2004, 09h57
  5. [Executable] Intégrer les DLL ou pas?
    Par Superstivix dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/06/2004, 10h17

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