用.net 2008开发的web程序,在IIS中布署了,里面有引用了一个C++的DLL,但是我关掉页面后,web站点里的所有东西除了这个C++的DLL外都能删除掉,但是就是这个不能删除,我换了个非常简单的C++的DLL,就是返回一个int型的值,但是还是一样的删不掉,[DllImport("Location.dll")]
        public static extern int fnLocation();C#中使用这样的方式引用,请问为什么那个C++的DLL删除不掉了,其它的都可以删,而且这个C++的DLL只是返回一个int型的值,是不是调用的地方要做些什么,或者要手动释放这个引用?请达人指点下

解决方案 »

  1.   

    .NET并不能自动释放动态加载的DLL,因此使用完DLL后应该自己释放DLL: 
    DLLWrapper.FreeLibrary(hModule); 
      

  2.   

    DLLWrapper.FreeLibrary(hModule); 这个hModule如何来的?
      

  3.   

    使用[DllImport("Location.dll")] 
            public static extern int fnLocation(); 的方式是不是就无法做到?只能通过使用动态加载DLL,使用Windows API函数:LoadLibrary、GetProcAddress以及FreeLibrary难道只能通过这种方式吗?如果我使用dllimiport的方式了,?
    使用[DllImport(Kernel32)]还不是Kernel32就无法释放,只不是他是系统的,没人去管,,