dll文件只要使用一次,就不能删除、覆盖,只有重新开机才能操作。
明明没有程序在使用,却提示某个程序在使用,我如何才能使他停止呢?
我发现有的安装软件就可以随时更新dll文件,他们怎么实现的???

解决方案 »

  1.   

    动态加载和释放DLL,用API函数:
    加载LoadLiabray()
    得到函数地址GetProcAddresss()
    释放FreeLibrary()FreeLibrary使实力计数减1,为0时,DLL释放
      

  2.   

    你必须得在自己的dll里面写个计数器一样的东西,否则怎么知道当前计数有多少?呵呵,偶又瞎说了一把
      

  3.   

    那是COM的东东
    普通的DLL文件在你没有使用调用程序时就自动释放了
    通过任务管理器看一下有没有使用DLL文件的程序在运行
      

  4.   

    什么是普通的dll文件?
    我用vb作了一个组件,怎么不自动释放?
      

  5.   

    在dll中我用到了GetDIBits API函数,如何在利用GetDIBits函数取得位图信息后,清除内存中的位图信息???
      

  6.   

    不用重新启动
    打开Service找到IIS Admin重起一下就可以了,工程可能也需要重起,相关引用比如InterDev也要关掉
      

  7.   

    楼上就是高人,果然重启IIS Admin Service一下就好了(dll被释放了),但不解决实际问题,我的目的是让他自动释放,要不随着时间的延长他占用的内存越来越多,直到出现内存溢出!!!
      

  8.   

    其实COM对象的释放应该是使用这个对象的程序的工作,如果人家还没有用完你自己就把自己挂掉,呵呵,那结果就很未知了阿如果你的dll随着时间的延长占用的内存越来越多,那你就要好好想想你的程序算法是不是在哪里不是很合理,从而造成了吃内存的老虎始终认为,在不明条件下自己释放自己不是个很好的做法
      

  9.   

    我作的是一个asp图形组件,其实质是利用vb中的picture控件绘图,再利用GetDIBits API函数取得位图信息。
    我的程序相当的简单,没发现有什么算法问题,但dll随着时间的延长占用的内存越来越多,我认为是dll文件没有被释放(或内存中的位图信息未被清除)。
    怎么让dll取得位图信息后释放(或清除内存中的位图信息)呢???
      

  10.   

    GetDIBits 取得的位图信息只是个副本,你是不是一些GDI对象没有及时释放阿