相比静态加载dll,动态加载的方式具有更大的灵活性,可以在需要使用dll接口时再加载,减小程序负担。此外,更易于模块开发的灵活性。例如在股市行情系统中,可以搭载一个通用网络架构,专门负责网络连接以及编码行情的发送,至于交易所之间的差异,则可以开发不同的dll来单独处理。网络架构针对不同的交易市场,加载不同的dll(当然,dll的对外接口必须都相同,差异仅体现在dll内部的逻辑处理上)。这样便实现了网络架构的高重用性,以后如有新交易所加入,则仅需开发新的dll即可。下面用代码示例说明如何动态加载dll。
dll对外接口:
外部动态调用dll的代码:(不需要.h和.lib文件,只需要.dll文件即可)
int main( )
{
HMODULE hm = LoadLibrary("DLLAdd.dll");
myAdd func;
func = (myAdd)GetProcAddress(hm, "Add" /* 这里的名字必须与dll导出函数名相同 */ );
int nRet = func(17, 22);
}