Bonjour,

J'ai un problème sur l'utilisation d'une DLL.
Je suis sous Windows, j'utilise CodeBlock avec les librairies wxWidget.

Cette DLL permet de communiquer avec des "automate" de chez Delta Tau pour ceux qui connaissent. Elle fournie des fonctions de base ainsi que quelques boites de dialogue. Elle utilise les bibliothèque MFC ( je pense ).

A priori je réussi à la charger:
Dans le constructeur de ma Boite de dialogue principale je fais ça:

long dwDevice;
bool pbSuccess;

dynlib=new wxDynamicLibrary();
bool isLoad=dynlib->Load(_("PComm32W.dll"),wxDL_VERBATIM );
if(!isLoad){
wxMessageBox(_("erreur de chargement de la DLL"));
exit(0);
}
else
{
pmac = new IPmacDevice(this->dynlib);
pmac->SelectDevice(NULL,&dwDevice,&pbSuccess);
//pmac->Open(dwDevice,&pbSuccess);
}

Puis j'ai créé une classe IPmacDevice qui devait me permettre d'appeler chaque fonction de la DLL

void IPmacDevice::Open(long dwDevice, bool* pbSuccess)
{
typedef void (*Open_t)(long,bool*);
wxDYNLIB_FUNCTION(Open_t,OpenPmacDevice,*dynlib);

pfnOpenPmacDevice(dwDevice,pbSuccess);
}
L'appel à la fonction fonctionne correctement ( par exemple je réussi à faire afficher une boite dialogue qui est embarquée dans la DLL ), mais le passage des paramètres ne fonctionne pas, par exemple pbSuccess n'est pas modifié.
Et j'ai un gros crash dés que je sort de la fonction "IPmacDevice::Open".

J'ai du code qui utilisait cette DLL en VC++ et la méthode utilisait un "InvokeHelper(....)". De plus IPmacDevice héritait d'un "COleDispatchDriver".

Je suspect que ma DLL doit être manipulée d'une certaine manière mais je ne vois pas trop comment faire.

Pourriez vous m'éclairer sur la démarche à suivre ??