P/Invoke是否执行DLL然后将其关闭?

Rob*_*cks 7 .net c# c++ dll pinvoke

如果我使用C#来调用某个DLL,那么实际的C++ DLL是否会在调用期间运行然后被关闭,从而破坏所有已用内存?或者.NET会在非托管"堆"中负责C++ DLL使用的内存,并在每次调用静态函数时指向这些对象到C++ DLL?

当我需要某个C++项目来保持其内存持久性时,我是否应该创建一个ActiveX/COM服务器来保持其内存,并且能够从C#调用它?

Dav*_*nan 5

如果我使用C#来调用某个DLL,那么实际的C++ DLL是否会在调用期间运行然后被关闭,从而破坏所有已用内存?

不会.一旦加载DLL,它将保持加载状态.DLL的生命周期与函数调用无关.这意味着DLL中具有静态存储的变量在初始p/invoke调用之后仍然存在.