#pragma once typedef void (*pfnPluginFunc)(void* plg); #define EXPORTED _declspec(dllexport) struct version_s{ DWORD Major,Minor,Build; }; class IPluginInfo { public: virtual ~IPluginInfo() {} virtual void Init() = 0; virtual void Destroy() = 0; }; typedef struct { version_s sVersion; LPTSTR szPluginName; PBYTE md5Hash; pfnPluginFunc pfnInit; pfnPluginFunc pfnClose; pfnPluginFunc pfnGetClass; }PLUGIN_INFO_T, plugin_info_t, plugin_info_s; #define REGISTER_PLUGIN(plugininfo, initfunc, closefunc, classfunc) #define PLUGIN_CLASS(classname)\ class classname : public IPluginInfo\ {\ public:\ typedef IPluginInfo BaseClass;\ ~classname() {} \ void Init(); \ void Destroy(); \ };\