Exemple de creation et utilisation d'un simple dll . [Résolu]

Signaler
Messages postés
45
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
9 février 2011
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
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

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
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.
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Salut,

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

Tu as fait un :
implib /?

Un peu d'aide sur implib.
Messages postés
45
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
9 février 2011

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