Exemple de creation et utilisation d'un simple dll .

Résolu
bonapart002 Messages postés 45 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 9 février 2011 - 3 mars 2009 à 00:46
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 5 mars 2009 à 09:07
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 projet (Dynamic Library (.dll))
le dll contient un fonction factorielle son code est :
-------------factorielle.cpp

-------------------------
#include <windows.h>
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
extern "C" __declspec(dllexport) unsigned long int factorielle(int n)
{
unsigned long int resultat = 1;
if(n < 0)
return -1;
if(n == 0)
return 1;
for(; n > 0; n--)
resultat *= n;
return resultat;
}

----------------------------------------
puis j'essayé de compiler  (project->build all) ce code  pour  obtenir un fichier .lib ainsi qu’un .dll .mais m'afiche une erreur ."declaration syntaxe error ".
1ere question : c quoi cette erreur (j'ai bien placer le  .def  dans  le repertoire de projet)?

puis je veux creer un simple programme console qui utilise cette dll par exemple pour calculer le factorielle de 5 .le code est :
---------------------monprog.cpp----------------------------------------
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#pragma comment (lib, "dll_factorielle.lib")
extern "C" __declspec(dllimport) unsigned long int factorielle(int n);
void main()
{
int x;
x=factorielle(5);
printf("fact = %d",x);
getch();

}

 ---------------------------------------------------------------------------

2 eme question :est ce que c correcte  ce code ou non (  sans .dll  je peut pas le compiler )?

         et merci pour votre aide .

3 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 14
4 mars 2009 à 20:21
Salut,

A vu de nez je ne vois pas le problème... Le .def est redondant avec __declspec(dllexport).

Un tuto sur les dll et C++ Builder.
3
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 14
5 mars 2009 à 09:07
Salut,

Pourquoi mettre ces options s'il ne les connais pas ?

Tu as fait un :
implib /?

Un peu d'aide sur implib.
3
bonapart002 Messages postés 45 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 9 février 2011
5 mars 2009 à 01:56
ok merci
maintenant ce code fonctionne bien
juste j'ai une pb pendant la génération de de la .dll et de .lib
le borland génère le fichier .dll mais ne génère pas le fichier .lib
cette commande permet  de generer un fichier lib apartir d'une dll :

    c:>BC5>BIN>   implib -a -c  monlib.lib  mmondll.dll

mais si je le  teste il ne comprend pas le   -a

 

 
0