begin process at 2012 05 28 23:42:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

Créer une dll en C avec Code::Blocks


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Créer une dll en C avec Code::Blocks

samedi 5 août 2006 à 17:19:01 | Créer une dll en C avec Code::Blocks

seb5

Salut à tous,
Je souhaite placer certaines de mes fonctions dans une dll pour pouvoir les réutilisé dans plusieurs programmes. Je programme en C sous Windows XP SP2.
Donc dans Code::Blocks je crée un nouveau projet dll. Je place mes fonctions dans le fichier main.c de ce projet:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#ifdef BUILD_DLL
    #define DLL_EXPORT __declspec(dllexport)
#else
    #define DLL_EXPORT
#endif

void affiche() {
    printf("Hello world");
}

int calcule(int a, int b) {
    int m = a+b;
    return m;
}

Je crée un fichier madll.def  contenant:

LIBRARY madll   ;Nom de la DLL
CODE PRELOAD OVEABLE DISCARDABLE
DATA PRELOAD SINGLE
EXPORTS
   affiche   ;Nom des fonctions de la DLL
   calcule   ;Nom des fonctions de la DLL

Donc je compile ce projet, pas de problème. Ca me crée aussi un .a mais je ne pense pas en avoir besoin puisque je veux une librairie dynamique et non statique.
Ensuite pour utiliser la dll je vais dans le projet de mon programme. Dans mon main.c je met:

int main() {
HINSTANCE DLLHandle;
typedef char (*PointeurFonctionType)();
PointeurFonctionType PointeurFonction;

DLLHandle = LoadLibrary("madll.DLL");
PointeurFonction = (PointeurFonctionType)GetProcAddress(DLLHandle,"affiche");
PointeurFonction();
return 0
}

Et donc là la console devrait afficher un jolie "Hello world", mais non. A la place j'ai l'horrible fenêtre de windows ma demandant si je veux envoyer un rapport d'erreur.
Alors après de long moments de recherches sur le net (jusqu'à la 12è pages de google quand même) je m'en remet à vous. Merci d'avance
samedi 5 août 2006 à 19:28:54 | Re : Créer une dll en C avec Code::Blocks

julienbj

Avant toute autre chose, vérifie que ta dll est bien chargée le LoadLibrary. POur ça, teste la valeur de DLLHandle. Regarde dans MSDN ce que te renvoies LoadLibrary sur une erreur, je ne sais plus si c'est NULL ou INVALID_HANDLE_VALUE.

Vive le C
Savon

lundi 7 août 2006 à 10:00:22 | Re : Créer une dll en C avec Code::Blocks

nightlord666

Membre Club
Rajoute un extern "C" devant la déclaration de tes fonctions.

En plus, je me rend compte que tu n'a pas mis le bon typedef, le typedef correct est sous cette forme :

typedef [type_retour](*[nom_typedef])([params]);

Donc pour toi : typedef void(*PointeurFonctionType)();


Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
lundi 7 août 2006 à 22:05:51 | Re : Créer une dll en C avec Code::Blocks

seb5

Merci de vos réponses, je teste dès que je peux.


Cette discussion est classée dans : code, int, projet, dll, fonctions


Répondre à ce message

Sujets en rapport avec ce message

Utilisation DLL SANS .lib [ par nasedo47 ] J'ai récupéré une DLL sur un site ainsi qu'une page avec les prototypes de toutes les fonctions contenues dans cette DLL.J'aimerais utiliser ces fonct Code externe à l'exe [ par dulac02 ] Salut à tousJ'aimerais savoir si il est possible de créer, à la manière d'une dll, un fichier externe au programme qui serait capable d'utiliser assez Comment faire un "SIMPLE" projet en C non .NET non manage non C++ avec VS2003 [ par laurent4x4x ] Bonjour à tous,voilà tout est dit dans le titre ...je ne fais pas de c++ et pas de c# non plusJe suis resté sur  Java  ;-)J'ai besoin de faire un simp Intégration DLL Csharp dans projet C++ [ par swyms ] bonjour à tous!Voila, j'ai une application développé en C++ avec visual studio 2002.Aujourd'hui, on me demande d'utiliser une DLL fait en CSHARP pour exemple de creation et utilisation d'un simple dll . [ par bonapart002 ] Bonjour:je suis débutant en c++ .je travail  avec Borland C++ 5.01.je veux créer une dll puis l'utiliser dans un programme .pour cela j'ai crée  un pr compiler c/c++ main en dll [ par bmoumen27 ] Comment compiler le code suivant en dll avec gcc [code=cpp]int main(int argc, char** argv){ //the main code here }[/code] Comment c/c++ appels .Ex IntToStr en C [ par RENTMEESTERS ] bonjour à tous, Je dois convertir un nombre entier INT en une chaîne de caractère qui devra être affichée sur un LCD (*char). J'utilise un 16F887 et creation d'une DLL à partir d'un projet C++ [ par sousi20 ] Bonjour, j'ai un projet crée en c++ ça marche bien et je veux créer sa DLL afin de l'utiliser dans une interface graphique Qt et je ne sais comment f code source en C [ par lyna191 ] Bonsoir a tous , as que il y quelqu'un parmi vous qui peut m'explique ce code la (explication de la fonction Deplace) ? merci [code=cpp] int Deplac Déclarer explicitement une conversion de int => Enum [ par RV2931 ] Bonjour, J'ai pas mal d'énumération dans mon programme et j'ai souvent besoin de de prendre un simple int en entrée et de le convertir en l'Enumérati


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales