选择“使用MFC作为静态链接库”进行编译,编译后的ocx在另一台电脑上提示提示“找不到指定的模块”,注册不了如果选择“不使用MFC”进行编译,在另一台电脑上可以注册1、其实我都是用的MFC里的dll,难道另一台电脑上没有安装MFC的dll吗?2、选择“不使用MFC”进行编译后的ocx文件太大,将近2M,怎么解决让他瘦身呢

解决方案 »

  1.   

    楼主,就是那样。
    mfc的库并不是所有的windows系统都有的,需要安装。其他类似的,如
    .net framework, directx, vs2205sp1redist等都是这样的。
      

  2.   

    写错了,
    vs2205sp1redist -》vs2005/2008 redist
      

  3.   

    1. 应该是2. 改成Release版本试试吧,或者用ATL
      

  4.   


    如何改成Release版本我用的vc6.0
      

  5.   

    在生成按钮边上有个Debug,在下拉框里选Release,再生成,就可以了.
      

  6.   

    你用Dependency Walker (DEPENDS.EXE)在目标机上看一下关联的DLL是否存在。
      

  7.   

    如果你使用的是VC.NET,找转换工具换为VC6.0,然后用VC6编译,这样就Ok了。
    MFC6所有XP都有,MFC7没有。
      

  8.   

    谢谢大家
    改成Release版可以了,其他机器都可以用regsvr32 注册了
    但是还有一个问题就是在网页中加载不了安全设置中的activex都启用了<object id=HisImp classid=clsid:230ACF06-5F14-42EB-ABAC-5E0A4A1A814E codebase=HisImp.ocx#version=1,0,0,1 width=200 height=200>
      <span style=color:red>不能装载文档控件。请在检查浏览器的选项中检查浏览器的安全设置。</span>
    </object>
      

  9.   

    用regsvr32可以注册,但在网页中加载不了说明什么问题啊
      

  10.   

    你应该把OCX打成CAB包 就算是OCX下载了 你能知道它注册不注册吗?
    要让控件注册就要有INF文件,有INF文件就不是一个文件了 这样你就要打成CAB包 而且要让IE认识你的控件 你还要进行数字签名等
      

  11.   

    今天发现还有人不知道Release版,Release是发行版啊,你给别人用一定是Release啊Debug是调试版,这是常识哦。“你应该把OCX打成CAB包 就算是OCX下载了,要让控件注册就要有INF文件,有INF文件就不是一个文件了 这样你就要打成CAB包 而且要让IE认识你的控件 你还要进行数字签名等”就按上边做,打包或者签名,你不会可以问我.
      

  12.   

    用C++的,只知有VC,不知有CB,导致以为MFC是全部,是生来就有的,启不知有VCL
      

  13.   

    MFC在其他机器上可能有N个版本,但不一定是你所使用的版本。
    如果使用静态库应该没有问题。(文件相对较大)
    采用动态库,你需要把使用的DLL文件,一起发布(可以放到system32下)。