我做了个DLL
在VB中可以声明
dim myOBJ as new myCom
可是如果使用其中的方法就回出现:"ActiveX部件不能创建对象"
如果我编译类型为DEBUG的话就可以使用了,可是为什么在没VC的系统中不能注册这个DLL?
小弟菜鸟,谢谢各位指点!

解决方案 »

  1.   

    你把这个组件编译成uncode的试一试
      

  2.   

    不好意思:上面的声明应该是dim myOBJ as new myCom.myClass并且使用 set myOBJ=New mycom.myClass也出现自动化错误.
      

  3.   

    bohut(伯虎) 如何设置静态编译啊?请指教 liufeng24(流枫) 我试过了,编译出来后98下不能注册啊
      

  4.   

    to楼主
    你在vb中引用了这个dll吗?
    我用同样的方法做过程序,没有碰到你说的问题。
      

  5.   

    use dependency check needed dll. i think your com dll included "mfc42.dll",so you should build your dll "releasedependency "mode
      

  6.   

    kingzai() 我使用的"releaseMinidependency "mode就是出现了这样的情况
      

  7.   

    你在编译时必须选择为not using mfc or use mfc in a static library.不然会产生mfc42.dll。
      

  8.   

    to kingzai() 
    我使用了 use mfc in a static library,并且输出为releaseMini dependency模式,这个时候可以用REGSVR32来注册,可是调用的时候还是出现“ACTIVEX部件不能创建对象”
    请教
      

  9.   

    VB动态创建ATL的对象/控件的时候是会出现莫名其妙的问题。我也遇见过,至今不知为什么。——我做的控件如果动态创建。那么点击窗体右上角的“×”可以正常关闭,如果用Ctrl+F4就会发生异常。后来不用动态创建的办法就好了。至于不能注册,是不是因为你生成该控件的机器上面没有装网卡,控件的UUID跟其他的Com对象的uuid冲突了?
      

  10.   

    是的。网卡物理地址是全球唯一的,UUID的生成用了你机器上网卡的物理地址+生成时间(不是简单的加法运算)以得到全球唯一的UUID,这样可以保证你的COM对象不会和别人的发生冲突。没有网卡的机器就不能生成全球唯一的UUID了。
      

  11.   

    不好意思:上面的声明应该是dim myOBJ as new myCom.myClass并且使用 set myOBJ=New mycom.myClass也出现自动化错误.虽然不是关键所在,但还是提醒你只写一个new 就行了