别人VB写的一个DLL(在COM+中注册),在VC ATL中用#import引入,然后CreateInstance。以前都是成功的。前两天,我修改了VB DLL中的一个Public Function的参数,因此重新编译和注册了DLL。修改的DLL Function在ASP中调用也仍然是成功的。但在ATL中的代码重新编译后,执行的时候就出现错误了,是CreatInstance一句出现的错误。这是怎么回事呢?
#import "c:\path\MyCom.dll" no_namespace, raw_interfaces_only
....
CoInitialize(NULL);
try
{
  _MyComInfoPtr pMyCom = NULL;
  pMyCom.CreateInstance(__uuidof(MyComInfo));
  if (NULL==pMyCom)
 {
   LogEvent(...);
  }
...
}

解决方案 »

  1.   

    是不是和我编译VB DLL时破坏了二进制兼容性有关系?因为Public Function的参数变了,当然兼容性要破坏了。但这个和CreateInstance有什么关系呢?(CreateInstance时还没有调用那个Function,而且那个Function是写给ASP调用的,根本就没有在VC ATL程序代码中调用。)
    我在F7重新编译ATL 代码时也是重新生成了MyCom.TLH文件。这还不够吗?
      

  2.   

    重新注冊一下.
    因為ActiveX Dll每次改了之后都要重新注冊.