#include #include #include //this is necessary, PLUGININFO structure, other related to load/unload plugin code #include //just helper, not necessary PLUGINLINK *pluginLink; HINSTANCE hInst; BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) //default dll entry point { hInst = hinstDLL; return TRUE; } PLUGININFO pluginInfo = { sizeof(PLUGININFO), //size of structure (char*)"example plugin", //short name 0, //description 0, //author 0, //author email PLUGIN_MAKE_VERSION(0,0,0,1), //version GLOBAL_ACCESS_FLAG //flags }; extern "C" __declspec(dllexport) PLUGININFO* SetPluginInfo() { return &pluginInfo; } extern "C" int __declspec(dllexport) 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 MessageBoxA(0, "Simple plugin initialisation done", "INFO", MB_OK); return 0; //all ok, retrun 0 } extern "C" int __declspec(dllexport) OnModulesLoaded() //load main code from here, all services from other plugins must be avaible here { MessageBoxA(0, "Advanced plugin features needed services from other plugins are working from now", "INFO", MB_OK); CallService("Test", 0, 0); //usage example of service registered in core return 0; }