Création de DLL sous code::block [Résolu]

Messages postés
1470
Date d'inscription
mardi 20 février 2007
Dernière intervention
7 février 2011
- - Dernière réponse : uaip
Messages postés
1470
Date d'inscription
mardi 20 février 2007
Dernière intervention
7 février 2011
- 5 mars 2008 à 12:46
Bonsoir.
Je voulais simplement savoir s'il y en a parmi vous qui seraient capables de m'expliquer comment créer une dll (qui fait par exemple de simples calculs de base, pour commencer) a partir de l'IDE code::block.
Cela fait plusieurs jours que je cherche des tutos, j'ai remarqué que la facon de faire n'était pas la même sur Visual c++ que sur Dev, mais que dire de code::block ? Je n'ai rien trouvé... J'ai tenté de dl des petits programmes puis de les remanier, mais rien n'y fait, je ne comprends pas la démarche a suivre...
Quelqu'un peut-il [re-]expliquer de facon brève et précise ? (même des liens peuvent suffir). Merci bien.

ps: (dlls codées en C si possible , et surtout, exportables dans un client mIRC )

Cordialement, uaip.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
3
Date d'inscription
mercredi 19 mars 2003
Dernière intervention
4 mars 2008
1
Merci
Les inludes dépende des fonctions que tu va utilisé.

mais j'ai réussi à faire des dll en c++, avec code::blocks => Create a new project
-> Dynamic link Library
->Tu donne un nom au projet ex "test7"
-> comme compillo tu garde "GNU GCC Compiler"
    moi je décoche "Create "Debug" configuration"
 tu à 2 fichiers
 - un "main.h" qui permet de déclarer les fonctions
 - un "main.cpp" qui comtient les fonctions

Dans le "main.cpp" la fonction "DllMain" doit ètre toujours à la fin.

une fonction est créer par défaut pour exemple c'est "SomeFunction"

 elle à 1 paramètre qui est la variable "sometext" qui est de type "LPCSTR"
quand tu appel cette fonction avec un texte en paramètre, c'est elle qui récupère le texte.
la fonction ouvre une boite d'information avec comme titre "DLL Message" et comme texte le texte que tu lui à passé en paramètre.

Dans "main.h", il y à l'include => #include <windows.h> pour "MessageBoxA"
il y à aussi la déclaration de la fonction de tout-à l'heure -> "void DLL_EXPORT SomeFunction(const LPCSTR sometext);"

si tu ne déclare pas tes fonctions dans "main.h", elle ne seront pas prise en compte.

J'ai télécharger la "SDL", c'est une librairie qui permet de faire plein de truc et facilement, 2D, 3D, audio, gestion clavier, souris etc..., je bricole pour l'instant la 2D !

J'ai aussi "Fmod" un librairie qui permet de lire des MP3, MOD, XM, WAV etc...
elle permet aussi d'appliquer des éffets sonore, comme l'écho, compression, etc...
elle permet aussi de lire des MP3 en streaming, sans télécharger le MP3, depuis internet(si le fichier est sur un serveur http et pas sur un ftp).

Voila, je bricole un tout petit peu en C/C++, je trouve un peut compliqué, mais on arrive toujours à s'en sortir grace au web.
A+

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_fifi82
Messages postés
3
Date d'inscription
mercredi 19 mars 2003
Dernière intervention
4 mars 2008
0
Merci
Salut
je suis pas tres doué en C, mais j'ai déja programmé quelques dll sous code::blocks.

Par défaut il fait des DLL en c++ ! j'ai pas tout pigé mais le même programme en C, est 10 fois plus petit, une DLL en C++ avec 3 ou 4 fontions elle fait environ 200ko, en C elle fait que 20ko ?

Pour faire une dll en C, il suffit de créer un projet console => C,
Tu lui donne un nom ex: test1, il vas créer un dossier qui porte le nom de test1 avec des fichiers dedans.

quand tu est sous l'éditeur tu éfface tous se qu'il y à dans main.c puis tu tappe tes fonctions

ex:

///////////////////////////
#include <windows.h>

#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT
#endif

// 1ere fonction
DLL_EXPORT void info(){MessageBoxA(0,"Par fifi82 2008", "DLL fifimod.dll", MB_OK | MB_ICONINFORMATION);}

// 2eme fonction
DLL_EXPORT void fifi82(){MessageBoxA(0,"Par fifi82 2008", "DLL fifimod.dll", MB_OK | MB_ICONINFORMATION);}

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{ case DLL_PROCESS_ATTACH: break; case DLL_PROCESS_DETACH: break;
case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break;
} return TRUE;
}
///////////////////////////////////////

Puis avant de compiler, il faut lui dire que c'est une dll et pas une application.
Dans la fenètre Management, sous Workspace il y à "test1", tu fait un clic droit dessus, puis tu fait "proprietie", tu vas sur l'oglet "Build targets" et efface "Debug", puis tu change le type, il y à "Console application", il faut "Dynamic library", tu peut changer le nom de la dll filale. tu fait ok puis tu compile avec "Build" ou ctrl+F9.

Voila, mes compétance sous code::blocks se terminent ici :
javascript:Insert_Emoticon('/imgs2/smile_cool.gif');</windows.h>
Commenter la réponse de cs_fifi82
Messages postés
1470
Date d'inscription
mardi 20 février 2007
Dernière intervention
7 février 2011
0
Merci
Humm... tu n'aurais pas oublié quelque chose après le premier #include ?
(sinon merci bien pour ce petit exemple )

Cordialement, uaip.
Commenter la réponse de uaip
Messages postés
1470
Date d'inscription
mardi 20 février 2007
Dernière intervention
7 février 2011
0
Merci
Tu m'as suffisament aidé pour que, bien que je galère encore un peu, je te mette en "réponse acceptée". Merci encore

Cordialement, uaip.
Commenter la réponse de uaip

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.