示意代码如下:
     Handle = LoadLibrary(A.dll)
     //do someting
     FreeLibrary(Handle)
     
     Handle = LoadLibrary(A.dll)
     //do someting
     ......
     FreeLibrary(Handle)     Handle = LoadLibrary(A.dll)
     //do someting
     ......
     FreeLibrary(Handle)
     .....
     
     这样调用多次后,LoadLibrary就会失败,不知到是什么原因,请高手指教。
      另:如LoadLibrary失败重复调用一次LoadLibrary,可以成功,但会造成内存泄漏,

解决方案 »

  1.   

    LoadLibrary 失败的时候,查看以下错误 GetLastError
      

  2.   

    查看DllMain的process_attach是否有些特殊要求
      

  3.   

    A.dll的确是有资源泄漏,但为什么多次之后才失败呢?不懂
      

  4.   

    可能是dll之中自身一些资源没有释放造成的泄露
      

  5.   

    多次调用LoadLibrary, 进程会在内核中记录下模块的引用技术,调用一次引用计数++,
    FreeLibrary刚好相反,调用一次,引用计数--,计数为0时,进程就释放模块。
    所以匹配使用应该不会出现问题
      

  6.   

    case1: 是A.dll 申请不到必要的资源,导致load 失败
    case2: OS 分配不出必要的资源,导致load 失败
      

  7.   

    问题找到了,有些时候,初始化A.dll里的全局变量出错,导致Load失败
      feebody正解!