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.
- Quel compilateur puis-je utiliser avec Code::Blocks ?
- J'ai importé un projet/workspace MSVCToolkit, mais Code::Blocks insiste pour utiliser GCC. Où est l'erreur ?
- Mon projet doit être compilé avec un Makefile personnel. Est-ce possible avec Code::Blocks ?
- J'ai téléchargé MS VC++ Toolkit 2003 comme compilateur. Comment l'indiquer à Code::Blocks ?
- Je compile un projet wxWidget, et j'obtiens plusieurs "variable 'vtable for xxxx' can't be auto-imported". Où est l'erreur ?
- Je ne peux pas compiler une appication multi-thread avec VCToolkit ! Où sont les bibliothèques ?
- Microsoft appelle MSVCRT.DLL une "DLL connue" Comment savoir si je peux/dois l'utiliser?
- Comment puis-je utiliser une DLL sans fichier DEF ou LIB ?
- Où sont les bibliothèques pour les projets OpenGl, Ogre3D, SDL, QT, wxWidgets etc. ?
- Est-il possible d'utiliser Visual C++ 6.0 avec Code::Blocks ?
- J'obtiens cette errreur à la compilation : Symbol "isascii" was not found in "codeblocks.dll"
- Je souhaiterais compiler un projet utilisant des bibliothèques non standard. Comment les indiquer à Code::Blocks ?
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).
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.
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é)
Cliquez sur "Project/Build options" et sélectionnez le compilateur que vous voulez pour votre projet/cible.
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.
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 |
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) |
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) |
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 |
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.
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 ?
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"
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.
Assurez-vous que vous n'avez pas mélangé les en-têtes MSVC avec celles de MinGW
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
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 çaLes 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.