ocx与dll的本质区别,请问大神们
ocx与dll的本质区别,请教大神们
请教各位大神,ocx与dll有什么本质区别:
(不要简单地说一个是控件,一个是函数库,我要的是这两者之间具体实现原理上的本质区别)
网上看了很多帖子,多说的含糊不清,大家见解也都各不相同,让我很迷茫。
1.什么情况下,只能做成ocx?
2.什么情况下,只能做成dll?
3.如果封装的接口不需要界面,也不需要消息响应,只是一些普通方法调用,这俩者有区别么?
(做成dll不是很简洁精练,而封装成ocx那么庞大臃肿,为什么不都用dll呢?)
4.ocx一定需要窗口,或者页面作为载体?
5.为什么ocx需要注册,而dll可以直接引用,是什么原理?
------解决方案--------------------
从逻辑上来说,是没什么区别的.就是名字不一样而已.
没人说不能把函数库放ocx文件里,也没人说activex控件不能放dll里.
只不过,从习惯上来说.ocx文件里一般只放activex控件.而dll文件里什么都有.
如果你是想知道activex和dll这两种技术的区别,那也很简单.dll就是动态库,是一种动态引用的库.这个技术是activex的基础.没有dll就不可能做出activex.而activex是很上层的一种封装机制,是ms在ole基础上搭建的一种组件模型.
或者这样说会清楚一点.
activex(ocx)就是实现了特定几个接口的ole组件.
ole组件是实现的ole接口的com组件.
com组件则是按一种特定模型导出接口动态库.
------解决方案--------------------
一般跨语言做成OCX,
OCX是以COM接口实现接口,DLL也可以实现COM接口,但多语言调用没有OCX方便。
------解决方案--------------------
OCX是纯面向对象的,DLL就可以是函数接口,也可以是对象接口,应该说OCX是DLL中的一种。
------解决方案--------------------
对,ocx是dll的一个子集
------解决方案--------------------
ocx跨语言很方便,包括回调等等,如果用dll的化,实现这些大概很困难
------解决方案--------------------
------解决方案--------------------
OCX:可以达到二进制级别的重用
DLL:特定平台的重用
.cpp:代码级的重用
------解决方案--------------------
------解决方案--------------------
请教各位大神,ocx与dll有什么本质区别:
(不要简单地说一个是控件,一个是函数库,我要的是这两者之间具体实现原理上的本质区别)
网上看了很多帖子,多说的含糊不清,大家见解也都各不相同,让我很迷茫。
1.什么情况下,只能做成ocx?
2.什么情况下,只能做成dll?
3.如果封装的接口不需要界面,也不需要消息响应,只是一些普通方法调用,这俩者有区别么?
(做成dll不是很简洁精练,而封装成ocx那么庞大臃肿,为什么不都用dll呢?)
4.ocx一定需要窗口,或者页面作为载体?
5.为什么ocx需要注册,而dll可以直接引用,是什么原理?
------解决方案--------------------
从逻辑上来说,是没什么区别的.就是名字不一样而已.
没人说不能把函数库放ocx文件里,也没人说activex控件不能放dll里.
只不过,从习惯上来说.ocx文件里一般只放activex控件.而dll文件里什么都有.
如果你是想知道activex和dll这两种技术的区别,那也很简单.dll就是动态库,是一种动态引用的库.这个技术是activex的基础.没有dll就不可能做出activex.而activex是很上层的一种封装机制,是ms在ole基础上搭建的一种组件模型.
或者这样说会清楚一点.
activex(ocx)就是实现了特定几个接口的ole组件.
ole组件是实现的ole接口的com组件.
com组件则是按一种特定模型导出接口动态库.
------解决方案--------------------
一般跨语言做成OCX,
OCX是以COM接口实现接口,DLL也可以实现COM接口,但多语言调用没有OCX方便。
------解决方案--------------------
OCX是纯面向对象的,DLL就可以是函数接口,也可以是对象接口,应该说OCX是DLL中的一种。
------解决方案--------------------
对,ocx是dll的一个子集
------解决方案--------------------
ocx跨语言很方便,包括回调等等,如果用dll的化,实现这些大概很困难
------解决方案--------------------
------解决方案--------------------
OCX:可以达到二进制级别的重用
DLL:特定平台的重用
.cpp:代码级的重用
------解决方案--------------------
------解决方案--------------------