我用atl写了一个com组件,在vb中调用没有问题
可是在vc写的console程序中调用出现实时错误,
调用代码如下:#import "E:\bt\atl1\Debug\atl1.dll" no_namespacevoid main()
{
CoInitialize(NULL);
ITestPtr pTest = NULL ;
pTest.CreateInstance(__uuidof(ITest));
         pTest->Get1();
CoUninitialize();
}
我发现pTest在创建实例后是NULL,不知什么原因,请高手指点!

解决方案 »

  1.   

    CoInitialize(NULL);//让ITestPtr 的析构函数在CoUninitialize()之前被调用。否则CoUninitialize()被调用
    //COM库的舞台都没有,再在ITestPtr 的析构函数中去调Release()就-------出错
    {
      ITestPtr pTest = NULL ;
      pTest.CreateInstance(__uuidof(ITest));
      pTest->Get1();
    }
    CoUninitialize();
      

  2.   

    先谢谢啦!不太明白你说的意思,再说我pTest在实例化后为NULL跟你说的问题所在好像没有关系哦
      

  3.   

    我将_uuidof(ITest)  改成_uuidof(Test)居然就行了。不明白!!!
    然后就会出现Cline所说的错误,但我不知怎么析构pTest。
    请问如何调用pTest的析构函数? 谢谢!!
      

  4.   

    析构pTest是在走出pTest的块({})时自动调用的。