IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Compilation
        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 ?



Quel compilateur puis-je utiliser avec Code::Blocks ?
Créé le 27/11/2006[haut]
auteur : Nicolas Joseph
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).


J'ai importé un projet/workspace MSVCToolkit, mais Code::Blocks insiste pour utiliser GCC. Où est l'erreur ?
Créé le 27/11/2006[haut]
auteur : Nicolas Joseph
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.


Mon projet doit être compilé avec un Makefile personnel. Est-ce possible avec Code::Blocks ?
Créé le 27/11/2006[haut]
auteur : Nicolas Joseph
Oui, vous pouvez. Vous devez modifier deux options différentes :

  1. Dans "Compiler Settings", sous l'onglet "Other", il y a une option nommée "Build Method". Choisissez "Work with makefiles".
  2. 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é)

J'ai téléchargé MS VC++ Toolkit 2003 comme compilateur.  Comment l'indiquer à Code::Blocks ?
Créé le 27/11/2006[haut]
auteur : Nicolas Joseph
Cliquez sur "Project/Build options" et sélectionnez le compilateur que vous voulez pour votre projet/cible.


Je compile un projet wxWidget, et j'obtiens plusieurs "variable 'vtable for xxxx' can't be auto-imported". Où est l'erreur ?
Créé le 27/11/2006[haut]
auteur : Nicolas Joseph
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.


Je ne peux pas compiler une appication multi-thread avec VCToolkit ! Où sont les bibliothèques ?
Créé le 27/11/2006[haut]
auteur : Nicolas Joseph
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 :
(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 :
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++ :
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 à :

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.

lien : tclsh script to extract import .lib from (any?) DLL (MinGW)
lien : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_c_run.2d.time_libraries.asp
lien : http://sapdb.2scale.net/moin.cgi/MS_20C_2b_2b_20Toolkit

Microsoft appelle MSVCRT.DLL une "DLL connue" Comment savoir si je peux/dois l'utiliser?
Créé le 27/11/2006[haut]
auteurs : Nicolas Joseph, Philippe Dunski
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.

Source: TCL Wiki


Comment puis-je utiliser une DLL sans fichier DEF ou LIB ?
Créé le 27/11/2006[haut]
auteurs : Nicolas Joseph, Philippe Dunski

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 ?

lien : http://www.mingw.org/mingwfaq.shtml#faq-msvcdll
lien : http://wyw.dcweb.cn/stdcall.htm

Où sont les bibliothèques pour les projets OpenGl, Ogre3D, SDL, QT, wxWidgets etc. ?
Créé le 27/11/2006[haut]
auteurs : Nicolas Joseph, Philippe Dunski
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" :)


Est-il possible d'utiliser Visual C++ 6.0 avec Code::Blocks ?
Créé le 27/11/2006[haut]
auteurs : Nicolas Joseph, Philippe Dunski

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.


J'obtiens cette errreur à la compilation : Symbol "isascii" was not found in "codeblocks.dll"
Créé le 27/11/2006[haut]
auteurs : Nicolas Joseph, Philippe Dunski
Assurez-vous que vous n'avez pas mélangé les en-têtes MSVC avec celles de MinGW


Je souhaiterais compiler un projet utilisant des bibliothèques non standard. Comment les indiquer à Code::Blocks ?
Créé le 13/11/2007[haut]
auteur : Nicolas Joseph

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


Consultez les autres F.A.Q.


Valid XHTML 1.0 TransitionalValid CSS!

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 © 2006 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.