我的同事用VB编写了一个ActiveX dll类型的dll库,但用另外一个vb程序第一次调用这个dll前,需要用regsvr32注册这个dll,这是为什么? 可不可以用其他方法实现不注册.注册这个步骤在以后升级过程太麻烦了,会给使用方带来很大的不方便.
急!

解决方案 »

  1.   

    activex 一定要注册。但是你可以在运行时注册。建立对象时不要直接引用,而是使用 createobject("myactivedll.abc") 这样的方式,
    然后判断错误,如果出错就认为它没有注册,你就用 shell "regsvr32 /s myactivedll.dll" 注册它。 regsvr32 带 /s 参数可以防止出现提示框。当然也有现成的用 api 注册的代码,vb版有高人的 blog 上有下载。
      

  2.   

    但有这个问题,以后升级dll,如果不重新注册,系统仍然会用旧的dll文件,我也不清楚为什么会这样
      

  3.   

    那你肯定要用新 dll 覆盖旧的 dll 文件才行,不然它当然调用的是旧 dll
      

  4.   

    就是 dll 工程属性中,有个选项叫“二进制兼容”。一般默认为“工程兼容”
      

  5.   

    一定要注册,因为vb写的dll并不是标准dll,而是一个com组件
      

  6.   

    "建立对象时不要直接引用,而是使用 createobject("myactivedll.abc") 这样的方式"
    能具体写一写吗
      

  7.   

    生成的dll 由delph 调用