现有一个测试通过的MFC ActiveX控件,调用了外部的一个mytool.dll,通过VC编译注册后可以在网页中使用。我将mfc80.dll,msvcrt.dll,mytool.dll,playerchajian.ocx,playerchajian.inf做成cab包,编写网页将codebase设在本地的一个文件夹,将IE的安全设置设为最低,打开网页,允许控件安装,并且在IE8左下角可以看到安装了playerchajian.cab等,但是控件还是无法使用,不知道是什麽原因?另外,我使用regsvr32,将..\..\playerchajian.ocx手动注册,仍然不能使用,不知道是什么原因?是否与该控件使用了外部dll文件有关?希望大家给出解决方法或一些建议。

解决方案 »

  1.   

    mytool.dll这个是否也要regsvr32注册..
      

  2.   

    用regsvr32注册了mytool.dll还是不行。
    另外,我主要还是想用cab完成自动注册,不知道oyljerry还有什么建议?
      

  3.   

    应该还是依赖项丢失的问题,DLL无法加载成功。用 Dependency Walker 检查一下控件的依赖项。
      

  4.   

    mytool.dll 等依赖的dll是否都安装到对应的目录,mfc80.dll,msvcrt.dll 最好带上对应的manifest文件指定好对应正确的版本..
      

  5.   

    想请问一下jameshooo,Dependency Walker如何使用,原来没接触过
      

  6.   

    打开这个工具,在菜单里选择打开你的EXE或者DLL文件,它将会显示出依赖哪些DLL,使用了这些DLL中的哪些导出函数。除了操作系统“已知的”DLL外(操作系统自带),其它的依赖项都需要一起打包。
      

  7.   

    jameshooo您好,我已经使用Dependency Walker工具将ocx文件打开,但似乎有很多依赖的dll文件,我想请问一下您,对于是否是系统自带的dll,我是需要自己一个一个排除呢,还是有个什么命令可以帮助筛选?
      

  8.   

    另外,虽然打开网页时在IE的左下角可以看到“安装组件playerchajian.cab”等的提示信息,安装完后,我没有在system32文件夹下发现playerchajian.ocx,mytool.dll文件。
    还有就是,我使用regsvr32命令,将..\..\playerchajian.ocx手动注册在未编译过该项目的计算机上,控件可以正常使用了。
    不知道大家有什么看法?到底是哪里的问题?
      

  9.   

    没有命令能筛选,只能靠经验。或者查看DLL属性,如果文件在系统文件夹,且文件版本等于操作系统的版本,那基本上就是系统自带的。
    实在不行,你把所有直接依赖的DLL列表发上来,我们帮你筛选。
      

  10.   

    估计是 playerchajian.inf做成的cab包有问题
    原来我我也遇到类似问题 后来重新做cab包就好了
    原谅我没有找到真正问题所在  
    关注!
      

  11.   

    问题已经解决了,我最后只打包了控件的ocx文件和调用的一个解码的dll文件,没有打包mfc80.dll,msvcrt.dll等就好了,谢谢大家的建议,我也学到了不少东西。前一段时间比较忙忘了结贴了,嘿嘿