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

时间:2014-09-23 19:14:08

标签: c# c++

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

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

并从C#中调用此

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

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

1 个答案:

答案 0 :(得分:3)

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