我现在在一台机子上用matlab提供的combuilder生成com,在同一台机子上用vc编写的程序也能正确调用该com。当我想在另一台没有安装matlab的机子上使我的vc程序正确调用该com,使vc程序能脱离matlab环境运行。我将之前编写的com在新机子上注册了,然后把vc程序考到新的机子上,程序不变,可是程序出问题了:
Ihuiclass * st=NULL;
HRESULT hr=CoCreateInstance(CLSID_huiclass, NULL,CLSCTX_ALL,IID_Ihuiclass, (void **)&st);
没法产生有效的hr。
可是在原来的机子上,这句话就可以正确执行。没有问题。能获得有效的hr。
难道是com被注册后,并不能正确被使用,还需要其他额外的操作?
望各位大虾指点指点。

解决方案 »

  1.   

    VC程序可以用到了依赖matlab环境的东西
    Depend察看一下
      

  2.   

    如果缺少依赖的DLL,组件注册也不会成功的
      

  3.   

    自己又重新写了个小的程序,重复了,com制作,vc对com的调用,这次可以生成正确地hr了,也注册mwcomutil.dll和自己的dll。可是在调用com中的函数时,直接没法调用,即程序等于忽略了vc中对com里的函数进行调用的那句话。在本机都可以被正确调用,换个新机子,就不能调用了,com也注册成功了啊。为什么啊?