我想加载 指定DLL的com组件。
com组件不需要写入注册表。
不知道如何实现?

解决方案 »

  1.   


    lz可以这样试试:
    首先你LoadLibrary("com.dll");
    调用com.dll中的DllGetClassObject导出函数,返回一个类厂的接口IClassFactory,
    然后调用该接口的CreateInstance方法,就可以返回你想要接口指针了。
      

  2.   

    那就当初普通dll来处理,LoadLibrary,然后DllGetClassObject() 获得对应的类厂等,这几个接口com的dll导出了的.
      

  3.   

    不要用COM,整套COM很复杂
    你可以自己实现一个轻量级的仿COM例如根据自己的需求实现:
    1、你自己的IUnknown接口,可以和MS的一样,只有3个方法,其实QueryInterface好像也可以不用
    2、通过一定的机制创建接口,可以用CLSID,或者直接用字符串或者其他代替这样你就可以自己想加载几个dll就加载几个dll
      

  4.   

    如果是本地进程内服务,完全可以不用注册到注册表,当作一般的动态库操作。
    COM只输出4个接口函数:DllCanUnloadNow,DllGetClassObject,DllRegisterServer,DllUnregisterServer
    最后两个是注册和反注册用的,所以只需要知道前两个接口的功能就没有问题了。
      

  5.   

    这样做是不安全和不可预知的,因为这其中需要内存管理等很多方面,除非你非常了解你要使用的COM是怎样实现的,否则你的程序会有不可预知性
      

  6.   

    lz可以这样试试: 
    首先你LoadLibrary("com.dll"); 
    调用com.dll中的DllGetClassObject导出函数,返回一个类厂的接口IClassFactory, 
    然后调用该接口的CreateInstance方法,就可以返回你想要接口指针了。
      

  7.   

    ActiveXDLL免注册调用的方法:
    http://blog.csdn.net/fengrx/archive/2009/05/21/4207203.aspx是VB写的,你可以把语法修改成C++的。