Comment faire appel a une DLL a partir d'une application MFC

Signaler
Messages postés
22
Date d'inscription
samedi 25 mars 2006
Statut
Membre
Dernière intervention
18 février 2009
-
Messages postés
54
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
15 août 2015
-
j'ai une application MFC, qui fait appel a une DLL.
En fait, j'utilise une DLL qui joue le role d'un solver pour les programme d'optimisation lineaire (CoinMP). elle est implementée en C++, et la DLL ainsi que le .lib sont offerts

il y a déja un code ecrit en C pour faire appel a cette DLL qui est le suivant
//********la partie declaration dans un fichier .h*********************
#define SOLVCALL   __stdcall
typedef void *HPROB;
HPROB  (SOLVCALL *CoinCreateProblem)(char *ProblemName);

//*****************le main************
char *problemName = "Bakery";
HPROB hProb;
 hProb = CoinCreateProblem(problemName); 

lorsque j'ai intégré ce code dans mon programme MFC il me genère une erreur : unresolved external link
donc j'ai essayé de faire l'appel avec des pointeurs

j'ai mis le tout dans un fichier .cpp

typedef void *HPROB;
  HPROB hProb;

  HINSTANCE DLLHandle;
  DLLHandle = LoadLibrary("CoinMP.DLL");
  typedef HPROB  ( *explePointer)(char *ProblemName);
  explePointer Pointer1;
  Pointer1 = (explePointer)GetProcAddress(DLLHandle,"CoinCreateProblem");
  hProb =  Pointer1("test"); 
a la compilation tt se passe bien mais a l'execution, j'ai une execption 0xC0000005 acces violation
sachant que j'ai mis la dll et le .lib dans le mme dossier que mon projet

y a t il qlq'un qui peut m'aider? et merci d'avance

1 réponse

Messages postés
54
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
15 août 2015

dans ton program tu inclus

le header si il y en a un
#include "CoinMP.h"
#pragma comment(lib,"CoinMP.lib")  //ou le nom de lib inclus

si il y a pas header
extern "C" CoinCreateProblem();

main()
{
HINSTANCE DLLHandle;
  DLLHandle = LoadLibrary("CoinMP.DLL");

char *problemName = "Bakery";
HPROB hProb;
 hProb = CoinCreateProblem(problemName); 
}