Unload a DLL loaded using DllImport

前端 未结 6 1720
攒了一身酷
攒了一身酷 2020-12-01 03:14

How do I unload a DLL which has been loaded using DllImport in C#?

6条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-01 03:28

    This should free a module previously loaded when you called P/Invoke function.

    [DllImport("kernel32", SetLastError=true)]
    static extern bool FreeLibrary(IntPtr hModule);
    
    public static void UnloadModule(string moduleName)
    {
        foreach(ProcessModule mod in Process.GetCurrentProcess().Modules)
        {
            if(mod.ModuleName == moduleName)
            {
                FreeLibrary(mod.BaseAddress);
            }
        }
    }
    

提交回复
热议问题