我真的不觉的DLL比COM好很多,COM能做的工作DLL有很多也能完成,而且COM使用起来还要比DLL使用麻烦很多。
比如说:
COM优点
语言无关性    
可重用机制 DLL优点
只要遵循约定的DLL接口规范和调用方式,用各种语言编写的DLL都可以相互调用。虽然说COM是二进制形式的 
DLL难道不能重用?

解决方案 »

  1.   

    COM支持
    进程外调用
    远程调用
    脚本语言也可以调用
    更容易重用 重用的时候是对象
    更容易支持二次开发。例如office+VBA DLL
    速度比COM快
      

  2.   

    就是COM 对象可以是一个服务,在exe中
    也就是说调用的时候 可以调用进程和 对象在不同的进程中。你些一个COM 是对象吧,可以直接调用对象的成员函数。而DLL则不行。
      

  3.   

    akirya ,非常感谢
    HOOK算不算进程外调用?
    但是DLL里面不是也可以定义类吗?我们完全可以用这些类实力化对象呀。
      

  4.   

    com最大的优点是二进制兼容,而dll不是
      

  5.   

    dll导出类后,只能以隐式加载的方式调用dll,这限制了它的使用范围
      

  6.   

    HOOK不算,因为HOOK的时候最终会将dll映射进 其他进程空间。DLL是可以定义类,但接口不行,因为DLL没有规定对象的二进制是什么。
    虽说可以采用句柄HANDLE来达成相似的效果,但终究没有调用成员方便。
    而COM中规定了对象的二进制标准,所以这一点更好用了一些。
      

  7.   

    就是COM   对象可以是一个服务,在exe中 
    也就是说调用的时候   可以调用进程和   对象在不同的进程中。 
    --------------------------------------------------
    没太明白??
      

  8.   

    这样说吧,假如dll中有个致命错误 会造成调用的exe退出。
    但如果是一个进程外调用的exe的话,com对象所在的exe会退出
    而你的程序不会崩溃退出来。也就是说你调用的对象跟你的exe是不再一个进程里面的。
      

  9.   

    DLL和COM都是windows软件模块化设计的表现形式。将软件模块实现为COM仍然较DLL更具优势。但一个缺点是软件维护比较困难。总是难以在两个不同的编程环境中来对软件的问题进行跟踪。