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 :

[Debutant] linkage de librairie mysql, conflit avec msvcrt


Sujet :

Visual C++

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Debutant] linkage de librairie mysql, conflit avec msvcrt
    Bonjour,

    Merci de prendre le temps de lire ce topic. En premier lieu, je n'ai pas honte de dire que je suis un très débutant en C++, et Visual C++. Je m'y suis mis par la force des choses, pour le projet qui nécéssite votre aide. Je précise également que j'ai déjà écumé les tréfonds du web, ai trouvé quelques topics par ci par là, et ici même, mais qu'aucun n'a su résoudre ce mystère et m'amener a un build sans erreurs.

    Je suis en charge (comprendre, mon entreprise me charge de.) trouver une solution pour un daemon irc interne. J'ai opté pour inspircd qui semble convenir terriblement à mes besoins. J'ai cependant besoin de rebuilder le daemon car j'aimerai y ajouter des modules supplémentaires non compilés par défaut.

    Je télécharge donc l'archive des sources du daemon et me lance dans l'aventure. J'ouvre le .sln dispo dans /win et me voila fin prêt. Je lance une premier compilation a froid sans rien toucher, et ca build sans erreurs.

    La doc de inspircd dit un truc genre "les modules placés dans le dossier extra sont ceux qui nécéssitent des librairies externes c'est pourquoi ils ne sont pas compilés par défaut" (et accessoirement "démerdez vous").
    Donc, je fouille un peu le wiki et je trouve une procédure. Je rentre dans /src/modules/extra, et je copie le .cpp qui m'interesse (m_mysql) pour le placer dans /src/modules tout court. Dans mon projet cpp, je regarde mon fichier m_mysql.cpp, et je change son relative path pour le tout neuf (car le répertoire extra est exclu de la compilation).

    Je teste la compilation, comme ca pour voir. Comme plus ou moins prévu, j'ai une tétrachiée d'erreurs qui disent en gros "mysql_[fonction]" not found. Prévisible, donc.

    Viens le moment d'inclure la lib mysql nécéssaire. Je me rends dans mon dossier MySQL Server (fraichement installé et opérationnel) et j'y trouve les /include et /lib qui me semblent nécéssaires. A l'aveugle, j'ouvre les propriétés de projet, je me rends dans VC++ Directories et place les dossiers correspondants dans Include Path et Library Path.

    Là je me dis, c'est cool, c'est simple, ca va marcher. Que néni ! A la compilation j'ai un tas d'erreurs parlant de conflits de librairies dont voici un petit sample :

    error LNK2005: __encoded_null déjà défini(e) dans MSVCRT.lib(MSVCR100.dll) D:\sandbox\ircd\win\LIBCMT.lib(tidtable.obj) inspircd
    Le panneau de warning me suggère d'ignorer les librairies par défaut, parce qu'il semble que des fonctions soient définies 2 fois dans 2 librairies différentes et que ca foutrait la merde.
    Bien chef, je vais dans les propriétés du projet, Linker, Input, et je mets le "Ignore All Default Libraries" a "yes".

    On est reparti pour la compilation.

    Et la effectivement il me trouve plus mes fonctions en double. Par contre, il m'en manque une autre partie qui semble etre utilisée ailleurs dans le code, donc j'en aurai également besoin. Petit sample d'erreur au passage :

    Error 58 error LNK2001: symbole externe non résolu _memset D:\sandbox\ircd\win\channels.obj inspircd
    Ma question est donc : comment je fais pour avoir a la fois la librairie MSVCRT.lib qui semble indispensable a ma compilation, et la librairie mysql qui est également indispensable a la compilation avec mon module, sachant que les 2 ont certaines fonctions en commun ?

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Points : 21
    Points
    21
    Par défaut Regarde du coté des runtime
    Bonjour,

    D'après ce que je vois de ton erreur, je pencherai pour un souci de runtime dans ton programme.
    Je pense qu'il faudrait que tu modifies dans Visual dans les propriétés de ton projet : Propriétés/"C/C++"/Génération de code/
    Tu regardes à Bibilothèque runtime (ou runtime library) et là je pencherai pour le fait que tu dois avoir /MDd par défaut. Essaie de mettre /MTd si tu es en Debug et /MT si tu es en release.

    Je ne garantis rien.. mais tente toujours.

    A+

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/06/2008, 09h22
  2. Problème avec la librairie MySQL++
    Par guish59 dans le forum C++
    Réponses: 1
    Dernier message: 05/06/2008, 16h57
  3. [Makefile] Compilation avec librairie Mysql
    Par lexase dans le forum Systèmes de compilation
    Réponses: 8
    Dernier message: 09/02/2007, 18h42
  4. [Debutant/MySQL] Problème avec AS et Where
    Par kei-kun41 dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/01/2007, 12h44
  5. debutant : nombre d'utilisateur mysql
    Par titiyo dans le forum Débuter
    Réponses: 3
    Dernier message: 18/11/2003, 09h32

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