现在正开发一个视频系统。就是我们开发一套系统出来,以DLL的形式封装了设备生产厂家提供的对设备进行操作的DLL;现在有几个不同的厂家,提供的DLL接口不同,我们用一个DLL把这些接口都封装统一起来,提供给上层程序(如客户端程序)使用,上层只要设置好设备的生产厂家,然后调用我们提供的这个统一的DLL,我们的DLL就可以根据上层程的设置,调用不同厂家的DLL进行处理。即我们提供的DLL起了一个统一接口的容器作用。
问题是,我如何能方便地在程序中判断不同厂家提供的DLL呢?我现在的做法是,在每个函数里,都使用条件判断:
switch(Manuf){
case Manufactur1:
//调用厂家1的DLL中的函数
break;
case Manufactur2:
//调用厂家2的DLL中的函数
break;
case Manufactur3:
//调用厂家2的DLL中的函数
break;
}
在每一个分支里,都用LoadLibrary和FreeLibrary进行对厂家DLL的调用。
这样写,是没问题,就是不灵活,当有一个新厂家提供设备时,我就对每一个函数添加一个case分支了,请问大家有什么好的办法呢?可以动态来添加新厂家,而无需修改代码。
注,现在假设所有设备生产商提供的DLL都在同一个文件内。
问题是,我如何能方便地在程序中判断不同厂家提供的DLL呢?我现在的做法是,在每个函数里,都使用条件判断:
switch(Manuf){
case Manufactur1:
//调用厂家1的DLL中的函数
break;
case Manufactur2:
//调用厂家2的DLL中的函数
break;
case Manufactur3:
//调用厂家2的DLL中的函数
break;
}
在每一个分支里,都用LoadLibrary和FreeLibrary进行对厂家DLL的调用。
这样写,是没问题,就是不灵活,当有一个新厂家提供设备时,我就对每一个函数添加一个case分支了,请问大家有什么好的办法呢?可以动态来添加新厂家,而无需修改代码。
注,现在假设所有设备生产商提供的DLL都在同一个文件内。
每个DLL对应一个封装类 从CDllFucBase派生
然后一个case new不同的封装类 用CDllFucBase指针调用
十有八九会陷入泥潭中
huanyun(无妻徒刑) 说的方法这个方案还行
最好把dll类封装到一个接口中