c++ - 即使未包装在 extern "C"中,也会调用 DllMain() 吗?

标签 c++ windows dll linker

在用 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/

相关文章:

c++ - dll A 在不同的文件夹位置调用 dll B 函数

c++ - 在 C 或 C++ 中以编程方式删除非空目录

c++ - 为什么线程函数需要声明为 '__cdecl' ?

Python:用于运行 Excel VBA 脚本的脚本未运行

c++ - 确定时间关键循环中 200 毫秒卡住的原因

c++ - 加载 SFML 音频 dll

c++ - COM - 实现 DllGetClassObject

c++ - 如何在c++中使用迭代器的倒数第二个位置

c++ - 为 char 分配空间

php - 在 Windows 上用 PHP 计算文件行数