|
|
|
|
|
|
Programmer en 'C' sous Windows Introduction et prérequis
Les pages qui suivent se proposent de présenter des exemples de code-sources commentés,
permettant d'apprendre les bases de la programmation sous Windows en 'C' de manière
autodidactique et progressive.
Pour approfondir le sujet, je ne saurais trop vous recommander la lecture assidue du fameux "Programming Windows" de Charles Petzold (si vous avez la chance d'en trouver un exemplaire) et de vous habituer à parcourir la documentation Microsoft de référence : le MSDN qui dans sa version 2 est relativement mal fichue. Si vous pouvez vous procurer la version MSDN 1 à installer sur votre ordinateur, n'hésitez pas car elle est plus pratique. Le newsgroup fr.comp.os.ms-windows.programmation vous permettra aussi de trouver bon nombre d'informations sur le sujet, notamment dans ses archives disponibles sur google.
Compiler les sources 'C' sous Windows
Pour fabriquer un programme sous Windows en 'C' vous devez écrire généralement au moins 3 fichiers textes (.h, .c et .rc) contenant 3 types de scriptes : Le .h qui peut contenir des prototypes de fonctions et des définitions 'C' (type, enum etc...) ou 'macro' pour le pré-processeur (#define). Le .c qui constitue le code source écrit en langage 'C' et Le .rc qui contient un script permettant d'intégrer à l'exécutable des ressources (des données, icones, images bmp etc...). Le langage 'C' est relativement standardisé mais le pré-processeur et le compilateur de ressource sont spécifiques à la plate-forme de développement. Cependant, on fera en sorte de rester compatible avec le plus grand nombre d'outils de développement, de VC6 aux derniers Visual Studio en passant par les outils Borland, en utilisant des instructions et formalismes les plus communs. Pour compiler les sources 'C', créez un projet vide (Simple Application WIN32) et incluez les divers fichiers de l'exemple (MinPrg.h, MinPrg.c, MinPrg.rc). Compile & Run. Sous VC2005 et suivants: assurez vous d'avoir la configuration suivante : - Configuration Properties / General : Char Set = NOT SET - Configuration Properties / C/C++ / Preprocessor : _CRT_SECURE_NO_DEPRECATE
Linker pour Windows
Une fois la compilation faite (la compilation est le processus qui transforme un code source écrit dans un langage "humain" en langage assembleur puis en code machine compréhensible par le processeur), le linker a pour rôle de fabriquer un exécutable (un programme) à partir du produit de cette compilation en faisant, entre autres choses, les liens avec les références externes (tout ce qui n'est pas définit dans notre source mais auquel on fait référence). En effet dans notre programme, nous faisons souvent appel à des API Windows, c'est à dire des fonctions du système. Et bien le linker doit faire en sorte que ces appels arrivent aux bonnes fonctions, et que l'exécutable face référence aux bonnes DLL. Un programme Windows utilise généralement 3 DLL systèmes (au moins) : Kernel32, User32 et GDI32 et votre linker aura besoin de faire référence à ces 3 DLL pour pouvoir linker notre premier exemple de programme (le second aussi). Si vous utilisez un IDE avec lequel vous avez créé un projet "Win32 Application" ces DLL sont déjà dans les options du linker : kernel32.lib user32.lib gdi32.lib - ici les LIB sont des dictionnaires contenant une liste de références aux fonctions de chaque DLL associées, mais ne comportent aucun code exécutable. C'est pourquoi on parle de Lien "Dynamique", d'ailleurs DLL signifie 'Dynamic-link library'. Pour Editer les références (liens) d'un programme compilé (un EXE ou une DLL) je vous invite à utiliser le "Dependency Walker" qui vous dira quelles DLL l'exécutable utilise, quelles fonctions ? s'il en exporte etc... |
|