je me retrouve jamais avec la même fonction, puisque quand je change ou que je rajoute une fonction dans ma dll, ça change l'ordre et donc le numéro.
Ce que je voudrais c'est arriver à déterminer un ordre fixe quand je compile ma dll, ou alors mieux, je préfèrerais arriver à appeler les fonctions de ma dll avec leur nom et pas leur numéros.
du genre :
DMXconnectdevice = GetProcAddress((HINSTANCE)hModDll,(LPCSTR)"connectdevice");
J'ai essayé ça ne marche pas, j'ai une erreur de lien.
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 7 nov. 2004 à 22:17
Normalement faut caster le retour de GetProcAddress, oui...
611 DMXopendevice = (DMXOPENDEVICE) GetProcAddress((HINSTANCE) hModDll,"opendevice");
en supposant :
typdef VOID (* DMXOPENDEVICE)(INT, LPSTR);
static DMXOPENDEVICE DMXopendevice;
et tu utilises ensuite DMXopendevice comme une fonction normale.
Pour le premier warning, déclare hModDll en tant que HINSTANCE si ce n'est pas déjà fait.
J'ai ces quatres warnings là
Main.c:608: warning: assignment makes integer from pointer without a cast
Main.c:611: warning: assignment from incompatible pointer type
Main.c:612: warning: assignment from incompatible pointer type
Main.c:613: warning: assignment from incompatible pointer type
Pour le premier ça doit pas être bien méchant je dois faire un cast faut juste que je cherche le bon type, je vais aller voir sur la msdn.
Mais pour les trois autres, ils n'empèchent pas le programme de fonctionner mais je voudrais savoir d'où ils viennent, car des warnings c'est pas très beau dans une compil.
Mastersam
Messages postés116Date d'inscriptiondimanche 26 septembre 2004StatutMembreDernière intervention13 février 2008 7 nov. 2004 à 22:33
Voilà merci beaucoup Nebula, plus de warnings, mes fonctions sont bien définies, bref tout marche bien.
Suite au prochain épisode ... Je dois utiliser un thread pour envoyer des données à l'interface qui est pilotée par la dll, ça promet encore d'être "amusant" .