我用ATL做了一个simple object,然后自己加了另外两个接口,就是说这个组件总共三个接口。注册dll形式的组件后,在客户端调用,代码如下:         CoInitialize(NULL) ;
IAdvertiseMyself* pIAdvertiseMyself = NULL ; 
HRESULT hr = CoCreateInstance(CLSID_CalcPi,
                                NULL, 
                                CLSCTX_INPROC_SERVER,
                                IID_IAdvertiseMyself, 
                                (void**)&pIAdvertiseMyself) ;
if (SUCCEEDED(hr))
{
//trace("Succeeded getting IAdvertiseMyself.") ; pIAdvertiseMyself->ShowAd("1000"); // Use interface IAdvertiseMyself.
          }CoCreateInstance()调用成功,然后调用接口的方法ShowAd("1000")时异常;

解决方案 »

  1.   

    对了,还有,这个ATL做的服务端程序连接时提示找不到main()函数(奇怪,是动态库dll程序!),我在代码中加入:
    int main()
    {
        return 0;
    }通过,为什么会是这样呢?着可是dll程序啊!
      

  2.   

    还有奇怪的,先查询到IUnknown接口后,我用一个根本没实现的接口ID号去申请QueryInterface()居然返回值hr是成功。但是如果CoCreateInstance()时用这个未实现的接口ID号去申请时又正确失败。