说到组件,我们的第一个反映是他必须是面向对象的,其实在windows下唯一需要注册的就是com组件,因为windows系统只有对com组件的掌控才有实际的意义,因为com组件是跨语言的,任何的语言的程序都可以从操作系统中获取com组件,当然组件还有很多中,但只有com组件在业界形成了标准,所以才可以注册.例如,java也有自己的组件,jar文件,但是就算sun说服微软为他提供com组件的服务,又有什么用呢,其实是多次一举.其实按照我的理解,windows不替用户掌控com组件也是可以的,因为只要找到路径照样可以使用,但是现在的形势是似乎必须注册,然后其他人引用的时候,必须经过系统的认可.这也成为了一种标准吧.
我们也知道com组件的存在形式有很多种,ocx,dll,com,exe,但是我经常发现有些人见到dll,他就想注册,似乎dll必须注册才可以使用,有的还把动态链接库,放到系统目录下,如果是普通的动态链接库,这样做是完全没有必要的,因为系统根本不会理会这些毫无统一规范的小东西,你爱放哪放哪,只要调用的时候指明路径就可以了.
我们还要说明一点,那就是动态链接库是一种调用方式,而不是一种标准,因为实现动态的连接每种语言几乎都有自己的实现方式,由于他也是二进制的,所以如果你知道某种dll的结构也是可以引用的,例如,java就可以调用delphi的dll,因为他理解delphi的dll实现方法,就可以进行解析映射到自己的语言里面进行调用.
最后说明一点,不是com组件的dll是不可能通过组件注册注册成功的,因为在注册的时候会检查该dll的接口,是否符合com组件结构.