以前看到资料说,自已写的dll,如果不用regsvr32注册的话,放在与exe相同的目录下就可以的实现自动注册。  
可是我的为何不行呀。需要什么特别的操作吗?  
我就是将dll放在exe文件相同的目录下,但是启动exe文件是报错。  
请大家指教。

解决方案 »

  1.   

    既然一切都是你自己的就干脆都加到EXE里面去一起编译了,为啥非要独立一个dll
      

  2.   

    既然一切都是你自己的就干脆都加到EXE里面去一起编译了,为啥非要独立一个dll
    ---------
    谢谢指教,因为我写的这个dll是通用的,功能是操作数据库的一个类。
    所以可以拿过来直接用。多个项目都用同一个数据库操作类。没必要每个项目中都放一个数据库操作类呀。
      

  3.   

    参考http://topic.csdn.net/t/20051018/17/4334684.html,还是用regsvr32操作,只是不会提示“注册成功”的消息,应该符合你的要求
      

  4.   

    VB写的DLL是ACTIVE DLL,不是标准的DLL,标准的DLL是可以直接使用的。
      

  5.   

    启动时,使用一个过程去测试 一下DLL是否注册 ,如果没有就注册一下.送个函数给你:Public Function TestObject(ByVal ObjName As String) As Boolean
        '测试一个对象是否已经注册
        'ObjName - 对象名
        '返回值:
        '       如果对象已经注册,返回True
        '       如果对象未注册,返回False
        Dim I As Object
        
        On Error Resume Next
        
        TestObject = False
        Set I = CreateObject(ObjName)
        TestObject = Not (I Is Nothing)
        Set I = Nothing
    End Function使用:debug.Print TestObject("Excel.Applicartion")注册很简单,用regsvr32带个S参数就没提示框了
      

  6.   

    既然机器上已经使用普通权限登录,限制了灵活性;你的软件,也只能限制灵活性了不然就老实点,做到EXE里面去鱼与熊掌...那什么来着.....不过,既然这组件不需要经常更新(你好象说过,这是公用组件)那就一次性注册好,让EXE执行就好了.不然,你就再写一个服务,这个服务专门为注册COM组件而存在,并且由你的软件所使用不过难度有点高.再不然,直接使用管理员账号执行regsvr32.exe!不就行了!
      

  7.   

    ActiveX DLL 不注册也可以动态调用的,但要用到汇编。
      

  8.   

    发到博客里了,自己去看看吧。
    http://blog.csdn.net/Modest/archive/2007/09/01/1767950.aspx