#include #include //this is necessary, PLUGININFO structure, other related to load/unload plugin code PLUGINLINK *pluginLink; class wxPluginForEvilCore: public wxApp //this is like on default wxwidgets application { virtual bool OnInit(); }; IMPLEMENT_APP_NO_MAIN(wxPluginForEvilCore) //main() does not needed, we will create instance by hand later bool wxPluginForEvilCore::OnInit() { return true; } /*HINSTANCE hInst; BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) //default dll entry point { hInst = hinstDLL; return TRUE; }*/ //windows specific, does not needed ? PLUGININFO pluginInfo = { sizeof(PLUGININFO), //size of structure (wchar_t*)L"example plugin", //name 0, //description 0, //author 0, //author email 0x00010101 //version 0.1.1.1 }; extern "C" PLUGININFO* set_plugin_info() { return &pluginInfo; //necessary, our plugin info for core can recognize us } extern "C" int load(PLUGINLINK *link) //basic initialisation, registering new functions, do other basic initialisation, you can create infinite loop, or other code which use many time here, only fast basic initialisation { pluginLink = link; //necessary //some basic initialisation code return 0; //all ok, retrun 0 } extern "C" int on_modules_loaded() //load main code from here, all services from other plugins must be avaible here { wxApp::SetInstance(new wxPluginForEvilCore()); //create instance, i think here is right place, not in load where we do only basic initialisation // wxEntry(GetModuleHandle(NULL),NULL,NULL,SW_SHOW); //here we need to get module handle somehow, commented string is for windows only return 0; } extern "C" int unload() { //do some cleanup on exit wxEntryCleanup(); //call it before, or after other cleanup return 0; }