Appel d'une fonction contenue dans une dll

ybuchheit Messages postés 13 Date d'inscription lundi 31 octobre 2005 Statut Membre Dernière intervention 1 février 2006 - 5 déc. 2005 à 10:30
platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 - 5 déc. 2005 à 11:03
Bonjour,

je souhaiterais appeler une fonction contenue dans une dll. Je n'ai pas le source de cette dll, le seul fichier dont je dispose est le .dll et une doc avec les prototypes des fonctions.

J'ai essayé d'écrire un prog en redéclarant la fonction provenant de ma dll, et en l'appelant mais en compilant (sous vc++), j'ai l'erreur suivante:
Fichier.obj : error LNK2001: unresolved external symbol _funcA
Debug/Fichier.exe : fatal error LNK1120: 1 unresolved externals

Quelqu'un saurait-il ce qui cloche?? (Pour info, je débute en cpp...)

Voici les sources:
FICHIER.H

#include <stdio.h>

[DllImport("C:\\ma_dll.dll", CharSet=CharSet.Ansi)]
extern "C" int funcA();

FICHIER.CPP

#using <mscorlib.dll>

#include "Fichier.h"
#include "windows.h"
#include "winnetwk.h"
#include "stdafx.h"
#include <stdio.h>


extern "C" int funcA();

int main(int argc, char* argv[])
{

int iRetour=funcA();
printf((char*)iRetour);
return 0;
}

1 réponse

platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 2
5 déc. 2005 à 11:03
Salut :)



Tu n'aurais pas également reçu un fichier .LIB, avec la DLL ? SI oui,
il suffit de le lier avec ton projet dans les options de LINK....



Sinon, je connais pas la méthode que tu emploies, alors je t'en propose une autre, tu peux toujours essayer ;)

C'est un exemple pour utiliser une fonction retournant void, ne prenant aucun argument :



void (*fonction)(void);

HMODULE dll;



if((dll LoadLibrary("C:\\ma_dll.dll")) NULL) {

// DLL non trouvée

}



if((fonction GetProcAddress(dll, "nom_fonction_dans_dll") NULL) {

// Fonction non trouvée

}



A partir de là, tu peux utiliser fonction();



@+++, et si quelqu'un a une autre suggestion.... :)
Rejoignez-nous