Utiliser un plugin (en dll)

CyberP Messages postés 283 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 4 juillet 2007 - 11 mars 2003 à 17:05
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 - 12 mars 2003 à 17:59
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

superpa Messages postés 113 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 5 janvier 2004
11 mars 2003 à 17:30
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
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
11 mars 2003 à 18:15
salut,

tu peux consulter cet article simple :
http://www.cppfrance.com/article.aspx?Val=1400
... et moi pour toute question
0
CyberP Messages postés 283 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 4 juillet 2007 2
12 mars 2003 à 10:22
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
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
12 mars 2003 à 11:20
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CyberP Messages postés 283 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 4 juillet 2007 2
12 mars 2003 à 12:50
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
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
12 mars 2003 à 17:59
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 .
0
Rejoignez-nous