Where do I initialize a managed C++/CLI DLL?

2020-04-08 12:17发布

What is, or should I ask, is there, an equivalent to DllMain when creating a DLL using C++/CLI?

Are there any restrictions on what cannot be called from this initialization code?

标签: dll c++-cli
4条回答
Juvenile、少年°
2楼-- · 2020-04-08 12:52

One giant advantage of .Net dlls is that they avoid the loader lock. One side effect is that there's no DllMain.

查看更多
迷人小祖宗
3楼-- · 2020-04-08 12:55

If you're using the dll in another managed project (a c# application for example), you don't need to do anything... As long as the classes you try to access are ref classes, you can access them from any other managed application.

查看更多
ら.Afraid
4楼-- · 2020-04-08 13:02

Since .NET 2.0 you have a "module initializer". See here for more information on how that solves the loader lock problem and also here

For a direct answer to your question, this page quotes the standard which says: "There are no limitations on what code is permitted in a module initializer. Module initializers are permitted to run and call both managed and unmanaged code."

查看更多
祖国的老花朵
5楼-- · 2020-04-08 13:05

Dan: With respect to the loader lock, C++/CLI's delay load of the CLR and proper initialization for a mixed mode binary, I just posted yesterday on the subject here.

More or less, if you have a mixed mode binary, you must not cause any managed code to run while you are in DllMain().

查看更多
登录 后发表回答