1.形式上都是2进制代码.
2.应用接口编程思想,三种形式进行接口交互,三种形式可以任意变化,最终产生不同形式组合的程序,Blizzard只有一个主程序,但开发一定是lib接口化.
3.使用预定义组成一个源码
#ifndef _LIB
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
return TRUE;
}
extern "C" __declspec(dllexport) IUICraft* UICraftCreate()
{
return new CUICraft;
}
#else // Static Lib
IUICraft* UICraftCreate()
{
return new CUICraft;
}
#endif//_LIB
对于动态DLL,采用动态加载,静态Lib使用extern手段,但严格遵循接口编程。
4.一个动态DLL可以同时向外展现内部C++ dllexport类, C++接口,COM组件对象以交给不同的最终用户使用。