使用C ++ / CLI创建DLL时,是什么,或者我应该问,是否等同于DllMain?
对于无法从此初始化代码调用的内容有任何限制吗?
答案 0 :(得分:4)
Dan:关于加载程序锁定,C ++ / CLI的CLR延迟加载以及混合模式二进制文件的正确初始化,我刚刚在the subject here上发布了。
或多或少,如果您使用的是混合模式二进制文件,则当您在DllMain()
时,不得导致任何托管代码运行。
答案 1 :(得分:3)
从.NET 2.0开始,您就拥有了“模块初始化程序”。请参阅here for more information on how that solves the loader lock problem和also here
要直接回答您的问题,this page quotes the standard说: “对模块初始化程序中允许的代码没有限制。允许模块初始化程序运行并调用托管代码和非托管代码。”
答案 2 :(得分:1)
如果你在另一个托管项目(例如ac#应用程序)中使用dll,则不需要做任何事情......只要你尝试访问的类是ref
类,您可以从任何其他托管应用程序访问它们。
答案 3 :(得分:0)
.Net dll的一个巨大优势是它们可以避免加载器锁定。一个副作用是没有DllMain。