使用 C++/CLI 创建 DLL 时,或者我应该问,是否存在与 DllMain 等效的东西?
这个初始化代码不能调用什么有什么限制吗?
Dan:关于加载器锁、C++/CLI 对 CLR 的延迟加载和混合模式二进制文件的正确初始化,我昨天刚刚在此处发布了有关该主题的信息。
或多或少,如果你有一个混合模式的二进制文件,当你在DllMain()
.
从 .NET 2.0 开始,您就有了一个“模块初始化程序”。有关如何解决加载程序锁定问题的更多信息,请参见此处,也请参见此处
为了直接回答您的问题,本页引用了以下标准:“模块初始化程序中允许的代码没有限制。模块初始化程序允许运行和调用托管代码和非托管代码。”
如果您在另一个托管项目(例如 ac# 应用程序)中使用 dll,则无需执行任何操作...只要您尝试访问的类是ref
类,您就可以从任何其他托管项目中访问它们应用。
.Net dll 的一大优势是它们避免了加载程序锁定。一个副作用是没有 DllMain。