Bonjour,
apres avoir longuement cherché sur le net, et ici aussi, j'ai pas reussi à trouver et creer une application wxwidget en dll. Je m'explique.
Je creer une fonction simple qui return un wxFrame:
extern "C" WXEXPORT wxFrame* Make_MainFrame(){
wxFrame *fr=new wxFrame(NULL,-1,_("FENETRE DANS DLL"));
return fr;
}
je complie ceci en dll avec codeblock(qui permet de créer des "build target" different et de specifier le type de compilation)
Bien ma DLL est générer.
Je la capture et je l'execute via mon wxApp:
#ifdef WX_PRECOMP //
#include "wx_pch.h"
#endif
#ifdef __BORLANDC__
#pragma hdrstop
#endif //__BORLANDC__
#include "LAURYGEN_App.h"
#include "mainframe.h"
#include <wx/dynlib.h>
IMPLEMENT_APP(LAURYGEN_App);
bool LAURYGEN_App::OnInit()
{
typedef MainFrame* dialogPtr;
wxDynamicLibrary* dynlib=new wxDynamicLibrary();
bool isLoad=dynlib->Load(_("library/SimpleDesign.dll"),wxDL_LAZY);
if(!isLoad){
wxMessageBox(_("erreur de chargement de la DLL"));
exit(0);
}else{
wxMessageBox(_("DLL chargee"));
dialogPtr (*dialfct)();
dialfct=(dialogPtr(*)())dynlib->GetSymbol(_("Make_MainFrame"));
//wxASSERT_MSG(dialfct,_("erreur"));
if(dialfct==NULL){
wxMessageBox(_("Fonction non chargee"));
exit(0);
}
wxFrame* fr=dialfct(); //C'est ici que ca merde
dynlib->Unload();
}
return true;
}
Voila avec wxDynamicLibrary pas de soucis, il est simple et efficace. Tous les teste e chargement de la dll et de la fonction marque succès.
MAis a l'instaciation de mon wxFrame a partir de la fonction receuilit, la erreur fatale 0x00000000....
Voila mon hypothese, apres chargement mon programme lit une partir de la memoire qui ne doit pas l'etre.( c'est tout ce que j'ai trouve)
C'est comme si l'objet n'est pq exporter.
Quelqu'un l'a t'il deja fait? PLEASE HELP ME, cela fait 1 mois
que j'essais.
Merci de me comprendre et de m'aider si possible
Partager