我对混合 .NET 程序集(即混合托管/非托管 C++ 程序集)的 CLR 和 CRT 的初始化顺序有一些疑问。
因此,如果我有一个混合模式的程序集 dll 文件,并且它通过 Assembly.Load 加载。我注意到在首先调用某些托管代码之前,不会初始化或调用任何静态本机对象。好的。所以我认为在启动时首先初始化 CLR 代码,最后调用 CRT 初始化。关机顺序如何?CRT先关闭,CLR最后关闭吗?
事情是这样的吗?
start of program lifetime
initilialize CLR
...initilialize CRT
...construct native static instances
... program runs....
...shutdown CLR
...destruct native static instances
shutdown CLR
end of program lifetime
还是以其他顺序?
我的问题也适用于可执行文件(即.exe)的混合模式程序集。是相似的吗?
start of program lifetime
initilialize CLR
...initilialize CRT
...construct native static instances
... program runs....
...shutdown CLR
...destruct native static instances
shutdown CLR
end of program lifetime