在用 C++(64 位 Windows)编写的 DLL 中,不应该 DllMain()
被声明为使用 C 链接,即用 extern "C" { }
包裹?
据我所知,this DllMain()
method正在使用 C++ 链接,但它被正确调用。
是否有一些特殊情况某处允许 DllMain()
要调用具有 C++ 链接(因此具有损坏的名称)的方法?
最佳答案
操作系统不会直接调用代码的DllMain
函数()。 DLL 自己的 RTL 在内部调用它。 RTL 的真实入口点在 DLL PE header 中公开,以便操作系统可以找到它。操作系统调用 RTL 的入口点,然后该入口点调用代码的 DllMain()
函数。 DllMain()
本身的链接与操作系统无关,只与链接器有关。
关于c++ - 即使未包装在 extern "C"中,也会调用 DllMain() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33639240/