当使用pinvoke从c#代码调用时,非托管c++dll何时从内存卸载

when does unmanaged c++ dll unload from memory when called from C# code using pinvoke

本文关键字:c++dll 内存 何时 卸载 pinvoke 调用 代码      更新时间:2023-10-16

我在C++中有Sample.dll,就像这样,

extern "C" __declspec(dllexport) int func()
{
    return 100;
}

我从C#调用这个

[DllImport("SampleCPP.dll")]
public static extern int func();

我想知道当这个C#应用程序调用函数func()时,Sample.dll什么时候会从内存中卸载;?

第一次调用非托管DLL中的函数时(从C#或其他非托管代码),非托管DLL将加载到进程中,并且在加载它的AppDomain被销毁之前不会卸载。在一个典型的程序中,您只有一个AppDomain,因此当进程终止时,它将被卸载。