Sites & Tutoriels Utiles:
1.) http://www.siteduzero.com/
2.) http://casteyde.christian.free.fr/cpp/cours/index.html
3.) http://www.developpez.com/c/cours/
Tutoriel préalablement écrit par roach
puis sous sa
demande traduit par daminetreg : « Je vous
promet de
faire quelque chose de plus concret la prochaine fois. :p »
Légende:
Sprites Sounds Background Paths Scripts Fonts Timelines Objects Rooms Groupe Event Action §Point étape !Information importante |
Bien maintenant entrez dans le répertoire de Dev-C++, créez un sous répertoire « Projets » s’il n’existe pas déjà. Puis créez un autre répertoire nommé : « TestDLL » dans le répertoire « Projets ». Maintenant exécutez Dev-C++, puis cliquez sur : File > New > Project. Cliquez sur l’icône DLL une fois, comme nom de projet entrez : “Test” et vérifiez que la checkbox C++ est bien sélectionnée. Le logiciel vous demandera de le sauvegarder quelque part, sauver le dans le répertoire « TestDLL » que nous avons créé plus avant.
Désormais vous avez deux fichiers dans votre projet, le fichier d’en tête et le fichier principal de la DLL.
Tout d’abords nous devons définir plusieurs
paramètres pour notre
DLL, ouvrez le répertoire « Test » dans la
fenêtre d’exploration à
gauche de votre écran et cliquez sur :
« dll.h ». Sous la ligne
#define
_DLL_H_, collez ce code :
/* Début de
la définition
de l’utilisateur */
#define export extern "C" __declspec (dllexport)
/* fin de la
définition de l’utilisateur */
Ce code défini la fonction export de la DLL. C’est à utiliser en début de chaque fonction que vous voudrez utiliser dans vos DLL, et celle-ci permet… d’exporter! Vous êtes libre de changer export par quoi que ce soit, du moment que ça vous plaise.
Lorsque vous serez arrivé là,
dirigez vous dans le
fichier : dllmain.cpp. Supprimer tout ce qui est sous la ligne #include
<windows.h>, mais surtout pas celle-ci, en dessous, pas
dessus ni
haut dessus. Mis à part le commentaire. Pressez sur
entrée quelque fois afin de
vous donner un peu d’espace, et lorsque vous aurez assez d’espace pour
respirer, ou plutôt coder votre première fonction il
faudra y aller. Ce sera
quelque chose de simple, nous ne sommes pas ici pour apprendre le C++
mais bel
et bien le Gml, nous choisirons simplement une fonction permettant
d’additionner deux nombre. Collez
ce code ci:
export double add(double number1, double
number2)
{
return(double)number1+number2;
}
! Bien, vous vous sentez mieux désormais ? Nous allons donc essayer de comprendre ce petit brin de code… notez le export qui est le même que nous avons défini plus tôt dans le fichier d’en tête. Notez aussi qu’il est nécessaire qu’après chaque ligne d’une fonction il doit y avoir un point virgule : « ; ». Vous pouvez aussi voir que nous usons return, que nous avons réglé sur le type : double. Ce qui signifie qu’en additionnant number1 et number2 il retourne une valeur de type : double. Qui le sont chacune d’ailleurs, pour ce qui est des types de valeurs référez vous à d’autres tutoriels sur le C/C++.
Votre fichier : dllmain.cpp doit ressembler
à quelque
chose comme cela :
#include "dll.h"
#include <windows.h>
export double add(double number1, double number2)
{
return(double)number1+number2;
}
Bien jusque là ce n’était rien d’exceptionnel, ni de
difficile, et bien
devinez ! Ce ne sera rien de difficile et d’exceptionnel non
plus !
Nous allons appeler notre DLL à partir de GameMaker, et dans
cette optique
créer un nouveau script.
Ce script initialisera la DLL, collez le code suivant :
/* Ce
code va initialiser la fonction de la DLL que vous venez de
créer.
Cela définit quel est le nom de la DLL, le surnom de la
fonction, on
parlera d’alias, le type d’appel, le type de ressource, et les
arguments. Nous avons deux arguments, tout deux : « real »
qui
signifient numériques, le type de ressource est donc les
réels, car la
fonction de notre DLL retourne une valeur numérique. */
global.defTestDLL_Ajout=external_define("Test.dll","add",dll_stdcall,ty_real,2,ty_real,ty_real);
Maintenant créez un autre script, nommez le TestDLL_Ajout. Sur ces
lignes collez le code suivant :
//Arguments
//argument0 -
number1
//argument1 -
number2
///////////////////
external_call(global.defTestDLL_Ajout,argument0,argument1);
Maintenant notez comment nous avons appelé
la variable que nous avions
préalablement définie telle l’allias de la fonction dans
le premier script. Il y
a deux arguments, comme défini dans le premier script.
Créez désormais un objet,
puis dans l’événement Create
appelez le script d’initialisation. Puis dans « Key Release
»
sélectionnez Space
et ajoutez y la Piece
of Code
suivante en tant qu’action.
n1=get_integer("Entrez
le premier nombre:",0);
n2=get_integer("Entrez le
second nombre:",0);
reply=TestDLL_Ajout(n1,n2);
show_message(string(n1)+"+"+string(n2)+"="+string(reply));
Bonne Chance pour
tout vos projets...
Buhl Damien
alias daminetreg