IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ Code::BlocksConsultez toutes les FAQ

Nombre d'auteurs : 6, nombre de questions : 26, dernière mise à jour : 21 novembre 2007  Ajouter une question

 

Cette FAQ est tirée de la traduction de la FAQ officielle de Code::Blocks enrichie des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes ; les auteurs font le maximum, mais l'erreur est humaine.

Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur ou si vous souhaitez devenir rédacteur, lisez ceci.

SommaireCompilation (12)
précédent sommaire suivant
 

La philosophie de Code::Blocks est de pouvoir utiliser n'importe quel compilateur sur Terre ! Enfin, presque. En effet cela dépend en grande partie du plugin compilateur utilisé. Celui fourni par défaut à l'installation de Code::Blocks, supporte GNU GCC (MinGW/Cygwin), MS Visual C++ Free Toolkit 2003, Borland's C++ Compiler 5.5, DigitalMars Free Compiler., OpenWatcom et Small Device C Compiler (SDCC).

Mis à jour le 27 novembre 2006 gege2061

Un petit problème de documentation. Le compilateur par défaut est habituellement GCC, ainsi lorsque vous l'importez avec le compilateur par défaut, vous lui avez dit d'utiliser GCC. Pour résoudre ce problème, allez dans "Project", "Build Option" et sélectionnez VC++ Tollkit comme compilateur. Une autre possibilité est de mettre le compilateur de Microsoft comme compilateur par défaut. Pour ce faire, choisissez Setting - Compiler, choisir le compilateur Microsoft dans la section "Selected Compiler" (en haut de la boîte de dialogue) et appuyez sur le bouton "Set as default". From now onwards, pour tous les nouveaux projets le compilateur Microsoft sera choisi par défaut.

Mis à jour le 27 novembre 2006 gege2061

Oui, vous pouvez. Vous devez modifier deux options différentes :

  • Dans "Compiler Settings", sous l'onglet "Other", il y a une option nommée "Build Method". Choisissez "Work with makefiles".
  • Dans les propriétés de votre projet, vous pouvez choisir d'utiliser un Makefile. Cochez "This is a custom makefile" (Attention! Si vous oubliez de cocher cette case, le makefile sera écrasé)

Mis à jour le 27 novembre 2006 gege2061

Cliquez sur "Project/Build options" et sélectionnez le compilateur que vous voulez pour votre projet/cible.

Mis à jour le 27 novembre 2006 gege2061

Vous devez ajouter WXUSINGDLL dans "Project->Build options->Compiler #defines" et reconstruire votre projet (ou créer un nouveau projet et utiliser l'option "Using wxWidgets DLL" qui ajoute "-DWXUSINGDLL" à Project->Build options->Other options). D'autres erreurs avec la même résolution sont : 'unresolved external symbol "char const * const wxEmptyString" (?wxEmptyString@@3PBDB)' ou approchant. Si vous employez la 1.0-finalbeta et que vous essayez de construire votre projet en liant statiquement wxWidget, la base du problème est quelques templates défectueux. Mais cela est corrigé maintenant.

Mis à jour le 27 novembre 2006 gege2061

Désolé, ce problème n'est pas résolu... Votre problème ne vient pas de Code::Blocks. Il existe, parce que VC toolkit gratuit (VCTK) ne fournit pas toutes les bibliothèques et outils livrés avec Visual C++ (VC) qui n'est pas gratuit, malheureusement. Essayez d'acheter un véritable VC++, ou mieux, téléchargez MinGW Les bibliothèques qui peuvent être obtenues gratuitement sont : Chemins :

Code : Sélectionner tout
1
2
3
(VCT3) Visual C++ Toolkit 2003 - C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib 
(PSDK) Platform SDK - C:\Program Files\Microsoft Platform SDK\Lib 
(NSDK) .NET 1.1 SDK - C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib
Les bibliothèques d'exécution C :

Code : Sélectionner tout
1
2
3
4
5
6
LIBC.LIB 	Single-threaded, static link                                          (VCT3, NSDK) 
LIBCMT.LIB 	Multithreaded, static link                                            (VCT3, NSDK) 
MSVCRT.LIB 	Multithreaded, dynamic link (import library for MSVCR71.DLL)          (NSDK) 
LIBCD.LIB 	Single-threaded, static link (debug)                                  (VCT3, NSDK) 
LIBCMTD.LIB 	Multithreaded, static link (debug)                                    (NSDK) 
MSVCRTD.LIB 	Multithreaded, dynamic link (import library for MSVCR71D.DLL) (debug) (NSDK)
Les bibliothèques C++ :

Code : Sélectionner tout
1
2
3
4
5
6
LIBCP.LIB 	Single-threaded, static link                                          (VCT3, PSDK) 
LIBCPMT.LIB 	Multithreaded, static link                                            (VCT3) 
MSVCPRT.LIB 	Multithreaded, dynamic link (import library for MSVCP71.dll)          (none) 
LIBCPD.LIB 	Single-threaded, static link (debug)                                  (VCT3) 
LIBCPMTD.LIB 	Multithreaded, static link (debug)                                    (none) 
MSVCPRTD.LIB 	Multithreaded, dynamic link (import library for MSVCP71D.DLL) (debug) (none)
Essayez de placer les répertoire de bibliothèque d'édition des liens à :

Code : Sélectionner tout
1
2
3
4
 
C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib 
C:\Program Files\Microsoft Platform SDK\Lib 
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib
Dans cet ordre : Les bibliothèques listées comme (none) ci-dessus sont actuellement présentes dans les sous-répertoires IA64 et AMD64 du répertoire de la bibliothèque PSDK . Pas sûr que ceci fonctionne sous Windows 32 bits, cependant, cela pourra être possible si elles sont prévues pour travailler en mode compatible 32 bits sur un processeur 64 bits (à essayer). Autrement, vous pouvez lier statiquement la bibliothèque C++ plutôt que d'utiliser MSVCP71.dll. Si vous voulez réellement lier avec MSVCP71.dll vous pouvez essayer de créer MSVCP71.LIB à partir de la DLL en utilisant lib.exe et sed. Recherchez sous google "exports.sed" pour plus de détails.

Mis à jour le 27 novembre 2006 gege2061

Microsoft ne décrit pas clairement ce que 'Known DLL' signifie. Une entrée dans la FAQ zlib (en) rend les choses plus claires.

La réponse courte est que MSVCRT.DLL est un composant système protégé et que pour préserver l'intégrité du système, il ne peut être mis à jour par aucun installateur de produit destiné aux utilisateurs finaux, mais peut être mis à jour de temps en temps par les mises à jour système.

Si cela ne fonctionne pas, vous devrez utiliser une bibliothèque non protégée telle que MSVCR70 ou MSVCR80 qui, non seulement peuvent être mises à jour, mais dont des versions privées peuvent être installées.

Un petit programme simple va sûrement fonctionner parfaitement avec MSVCRT.DLL. Un programme complexe et important en C++ va vraissemblablement nécessiter les fonctionnalités additionnelles de MSVCR.

La MSVCRT.LIB fournie avec le Visual C++ Toolkit 2003 crée des liens dynamiques avec MSVCR71.DLL qui n'est pas présente sur une installation toute fraîche de Windows XP.

MSVCR n'apparaîtra qu'après l'installation de certains logiciels qui en ont besoin tels que Adobe Acrobat Reader.

Cela signifie qu'un programme qui dépend de MSVCR doit redistribuer cette DLL ou qu'il risque de ne pas fonctionner sur un pourcentage élevé de systèmes pour des raisons qui ne seront évidentes ni pour l'utilisateur final ni pour le fournisseur du programme.

Pour les porjets qui peuvent utiliser MSVCRT de manière sécurisée et où il est impraticable de redistribuer MSVCR, une MSVRCRT.LIB qui crée la liaison avec MSVCRT.DLL est disponible dans tous les Device Driver Kit.

Il est préférable de garder la MSVCRT.LIB fournie par le compilateur et de renommer la MSVCRT.LIB extraite d'un DDK.

Ajoutez votre MSVCRTxx nouvellement nommée dans les bibliothèques requises et, pour éviter les problèmes, il est conseillé d'ajouter les drapeaux /MD et /NODEFAULTLIB:MSVCRT de manière à ce que les problèmes apparaissent lors de l'édition de lien plutôt que de manière aléatoire lors de l'exécution.

Assurez-vous de charger vos programmes dans le Dependancy Walker pour être certain que les fonctions ne sont pas liées à la MSVCRxx.DLL ou à la MSVCRT.DLL.

Il est essentiel que malloc, calloc, realloc, free et autre fonctions d'allocation de mémoire soient toutes importées de la même DLL.

Si vous utilisez MSVCRT.LIB du DDK Windows 2003, vous pouvez rencontrer une erreur d'édition de lien error LNK2001: unresolved external symbol ___security_cookie. Elle peut être résolue en passant à la MSVCRT.LIB qui se trouve dans le DDK de Windows XP ou en effectuant une lisaison avec bufferoverflowU.lib que vous tourverez dans le SDK de windows.

Mis à jour le 27 novembre 2006 gege2061 koala01

J'ai essayé de trouver une solution, et le script suivant a résolu le problème pour moi. J'ai utilisé un environnement cygwin pour tclsh et sed, et les outils MinGW pour objedump et dlltool. Voyez ici tclsh script to extract import .lib from (any?) DLL (MinGW)
Demande: MinGW ou Code::Blocks sont-ils capables de supporter la génération automatique ou l'importation de bibliothèques ?

Mis à jour le 27 novembre 2006 gege2061 koala01

Elles ne sont pas fournies. Les modèles sont fournis pour votre facilité, mais vous devez télécharger les bibliothèques vous-même. En d'autres termes "piles non fournies"

Mis à jour le 27 novembre 2006 gege2061 koala01

Oui. Voyez Integrating Microsoft Visual C 6 with Code::Blocks IDE pour une description détaillée de l'utilisation de VC++ 6.0 avec Code::Blocks.

Mis à jour le 27 novembre 2006 gege2061 koala01

Assurez-vous que vous n'avez pas mélangé les en-têtes MSVC avec celles de MinGW

Mis à jour le 27 novembre 2006 gege2061 koala01

Vous pouvez les définir pour votre environnement global ou uniquement pour votre projet.

Pour l'environnement global :

  • Menu Options/Compilateur et déboggeur
  • Dans les options globales du compilateur, selectionner l'onglet "Dossiers"
  • Ajouter les chemins nécessaires pour le compilateur et l'éditeur de liens

Pour vos projets :

  • - Clic droit sur le projet puis sélectionner Build options
  • - Sélectionner l'onglet "Dossiers"
  • - Ajouter les chemins nécessaires pour le compilateur et l'éditeur de liens
  • - Ajouter vos bibliothèques spécifiques dans l'onglet Linker
  • - Prêter attention aux options du projet et aux options des cibles

Mis à jour le 13 novembre 2007 gege2061

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.