P/Invoke执行DLL然后关闭它吗?

Does P/Invoke execute the DLL and then shut it down?

本文关键字:然后 Invoke 执行 DLL      更新时间:2023-10-16

如果我使用c#来p/调用某个DLL,实际的c++ DLL会在调用期间运行,然后关闭,销毁所有已使用的内存吗?或者。net将负责c++ DLL在非托管的"堆"中使用的内存,并在每次调用静态函数时向c++ DLL提供指向这些对象的指针?

当我需要一个特定的c++项目有它的内存持久化,我应该创建一个ActiveX/COM服务器有它的内存持久化,但能够从c#调用它?

如果我使用c#来p/调用某个DLL,实际的c++ DLL会在调用期间运行,然后被关闭,销毁所有已使用的内存吗?

。一旦DLL被加载,它将保持加载状态。DLL的生命周期是而不是绑定到函数调用。这意味着在初始的p/invoke调用之后,DLL中具有静态存储的变量将持续存在。

如果您从c++ -DLL创建一个对象,它实际上会一直存在,直到您删除它或处置它。当您需要手动删除非托管对象时,它将保留。