Utiliser un plugin (en dll)

Signaler
Messages postés
283
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
4 juillet 2007
-
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
-
Comment utiliser un plugin ? Le charger et utiliser les fonctions qui sont à l'intérieur ?

Je compile un fichier en dll avec une fonction "dire_bonjour()" qui affiche un simple bonjour a l'écran (un printf)

J'aimerai pouvoir accéder à cette fonction avec un autre programme. Il parait que c'est possible grâce au fichier à inclure "dlfcn.h" mais mon compilateur ne le trouve pas !

CyberP,
Celui qui dit que toute question a une réponse

6 réponses

Messages postés
113
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
5 janvier 2004

j'ai jamais entendu parlé de dlfcn.h
Si tu veux charger une fct d'une dll consulte une des dernières sources du site (untiliser une dll ou qqch comme ca (c pas une de mes sources) qui explique ca de manière très compréhensible. Si t'as encore des problèmes tu peux laisser un comme,ntaire, un msg sur le forum ou me contacter personnellement.

P-A
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
salut,

tu peux consulter cet article simple :
http://www.cppfrance.com/article.aspx?Val=1400
... et moi pour toute question
Messages postés
283
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
4 juillet 2007
2
Eh bien, j'ai étudié la source et j'ai composé moi-même un petit programme qui gère les plugins... Malheuresement, il ne marche pas ! Après plusieurs essais, j'ai essayé de tout simplement faire un copier-coller de la source, de la compiler, etc. (exactement comme pour la source) mais ca ne marche pas non plus !

L'erreur est la même dans les 2 cas : la fonction GetProcAddress renvoie la valeur null

J'ai pourtant bien recopié la source exactement comme elle était...

CyberP,
Celui qui dit que toute question a une réponse
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
bonjour,
si GetProcAdress retourne null, c'est que la méthode n'a pas été proprement exportée
as tu bien défini le symbole de précompilation PLUGIN en faisant la DLL ?
Ou peut-être ton compilateur ne supporte t il pas le
__declspecdllexport) car c'est spécifique à microsoft...
autre technique on peut créer un fichier .DEF pour exporter les fonctions
je sais, c'est assez délicat tout ça, mais ça en vaut le coup.
Etudie mieux le projet zippé (et les settings de projet)
Messages postés
283
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
4 juillet 2007
2
Eh bien, mon code est :

#ifdef PLUGIN_EXPORTS
#define PLUGIN __declspec(dllexport)
#else
#define PLUGIN __declspec(dllimport)
#endif

extern "C" PLUGIN void ecrire(char*) { 
 cout << "test";
}


pour le plugin et mon compilateur est visual C++ de microsoft, donc... je ne vois vraiment pas le défaut

Je pense quand même que ce sont les settings car quand je compile le projet du zip sans rien changer, ca marche mais quand je fais copier-coller vers mon projet, ca marche plus !

CyberP,
Celui qui dit que toute question a une réponse
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
je peux t´affirmer que l´erreur est sur les settings
ALT+F7 dand symboles de precompilation, ajoute simplement PLUGIN pour la DLL mais ne le fait pas pour l´EXE

tu peux aussi verifier en ouvrant ta DLL avec Depends.exe si les exports sont corrects
bon courage
...et desole pour mon manque d´accents car je suis en deplacement et sur clavier etranger .