在 DllMain Entry Point documentation 中,作者做了如下评论:
在 C/C++ 中,如何创建不同的例程并要求应用程序在其他例程之前调用它?
最佳答案
初始化例程可以是任何 exported 函数。诀窍是“需要其他应用程序调用它”。要强制执行它,您需要检查它是否在几乎所有其他导出函数中都被调用过。如果每个导出的函数都有一些共同的前缀代码,那将是检查初始化函数是否已被调用的好地方。
但是,如果您必须检查它是否在每个入口点中都被调用过,那么如果您在该函数未被调用的情况下实际自动调用该函数,则对 DLL 的使用者来说可能会更容易。这确实需要一些额外的工作来使其最有可能是线程安全的。您需要一个临界区(或互斥锁、信号量等)来确保它只被调用一次。
关于windows - 如何创建 DLL 初始化例程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5479826/