如题(这是我全部的分了,请各位大侠赐教)

解决方案 »

  1.   

    能说的具体点不,我对com不太熟悉,是use mfc in a static library吗?
      

  2.   

    应该是缺少相应的依赖库。楼主是用dependency walker看看是不是缺少?
      

  3.   

    如果是vs2005/vs2008 开发的
    在开发机器上搜索一下 vcredist*.exe
    把这个程序拿到目标机器上运行一下,
    在注册你的组件
      

  4.   

    是在vc6上开发的,我用dependency walker看了一下,好像是缺少MSVCRTD.DLL
    怎么样才能在没有装vc环境的机器上也能注册呢?
      

  5.   

    搜一下没安装VC的机器上有没有MSVCRT.DLL
    如果有改成release版即可
    没有把缺少的文件一起打包
      

  6.   

    对,是debug版,是不是我改成release版的话无论目标机器上有没有MSVCRTD.DLL都可以注册啊,还是要把MSVCRTD.DLL一起打包?
      

  7.   

    1.一起打包就可以
    2.也可以是用静态链接的方式。工程属性->General,然后Use MFC in a static Libaray.
      

  8.   

    改成 release 版的。win 2000 以后的操作系统都自带 mfc 6.0 release 版的dll,不需要自己打包了
      

  9.   

    顺便问一下,怎么能将com组件写成一个exe的一点就直接注册了,而不是用regsvr32呢
      

  10.   

    exe类型的com ,第一次运行时会自动注册。你可以写一个exe,调用regsvr32.
    或者写个批处理
    regsvr32.exe /i xxx.dll
      

  11.   

    使用release版本,就不需要MSVCRTD.DLL,不过你应该在工程中设置code generation 为/MT
      

  12.   

    写一个exe,调用regsvr32,也就是说在程序中用代码注册?
      

  13.   

    那怎么才能在c#代码里面调用regsvr32 并用它注册某一个com呢?能说详细一点吗,分全给你了
      

  14.   


    C#啊,        
    Process p = new Process();            
       
    p.StartInfo.FileName =@"c:\\windows\\system32\\regsvr32.exe";
                
    p.StartInfo.Arguments = @" dll的路径";
                
    p.Start();
      

  15.   

    WIN32 Release MinSize;
    WIN32 Release MinDependence;
    WIN32 Unicode Release MinSize;
    WIN32 Unicode Release MinDependence;
    应该选择哪个?
      

  16.   

    我生成了release版本,在别人机器上能注册了,但是在使用的时候显示“检索 COM 类工厂中 CLSID 为 {C2D2B2ED-BEDF-41E3-AE91-39DFC804FE78} 的组件时失败,原因是出现以下错误: 8007007e。”
    在我本机上试的时候在生成的目录下注册可以用,但是换个目录就不可以用了,不知道这是为什么呢?
      

  17.   

    这应该是你的组件用到了别的组件。看看源码目录下是不是有别的dll或者ocx啥的。
      

  18.   

    是用到了一些别的动态链接库,但是我把用到的动态链接库也都打包了,注册是可以成功,用的时候出现错误,debug模式下就不会出现,debug和release到底有什么区别呢
      

  19.   

    呵呵,有错误,那好好调试一下吧。Debug与Release的区别。
      

  20.   

    我用win32 release minsize 可以了,给分,多谢各位了