我在VC++环境下用MFC自己开发了一个ActiveX控件,程序编译通过了,也生成了一个led.ocx文件,但是控件没有自动注册,我用regsvr32 led.ocx 注册也不行,出现 Load Library("led.ocx")失败,内存分配访问无效。请各位大虾帮我分析一下原因,谢谢!

解决方案 »

  1.   

    用google搜寻一下"Load Library Error"。
      

  2.   

    debug regsvr32 led.ocx
    set a break point in your DLLRegisterServer function
      

  3.   

    use depends to get all dlls that your ocx depends on
    copy the thirdparty dlls to system32 and try regsvr32 again
      

  4.   

    我在DllRegisterServer(void)函数里设置了断点,debug时没有执行到断点,什么原因呢?我用depends工具查看都显示led.ocx用到的dll都已经加载了。可不可能是机器中毒的原因? 高手请帮帮忙!
      

  5.   

    如果你直接在CMD下执行regsvr32 led.ocx ,那必须要把led.ocx拷贝至c:\或c:\windows下,否则是不会找到该文件的,就会出现你见到的错误.或者就是把regsvr32.exe拷贝至你的led.ocx所在的目录,然后写一个bat文件
    就用regsvr32 led.ocx, 然后直接双击这个bat进行注册`
      

  6.   

    我是把led.ocx拷贝在C:\WINDOWS\system目录下面才用regsvr32注册的 以前我写过一个ocx就用这样的方法注册的
      

  7.   

    我用regsvr32   /u   led.ocx 还是出现以前的错误  Load Library("led.ocx")失败,内存分配访问无效
      

  8.   

    看你的ocx是否使用了第三方的dll或者不包含实现体的lib,如果使用了,但发布的时候没有加上需要的内容,注册是失败的。
      

  9.   

    你是用VC6.0吧?我也遇到过这个问题.
      解决方法:
         1,使用vc.net2003,打开项目后再编译及可!
         2,如果没有vc.net2003,请选择"编译"->批构件->全部重建(全选哦).最后选择ReleaseU下的.ocx使用regsvr32   /u   led.ocx 注册及可!
      我估计是VC6.0编译器的问题
      

  10.   

    你的控件所需要的DLL  是否在相关目录,否则的话 就失败了。