它可以用来在windows中运行任意的动态链接库,
它怎么可能知道任意 dll 的入口点?
答案取决于您需要多少细节。基本上,它归结为:
DLL 可以选择指定入口点函数。如果存在,则只要进程或线程加载或卸载 DLL,系统就会调用入口点函数。
[...]如果您提供自己的入口点,请参阅 DllMain 函数。名称 DllMain 是用户定义函数的占位符。您必须指定在构建 DLL 时使用的实际名称。
(取自 MSDN 文章Dynamic-Link Library Entry-Point Function。)
所以基本上,入口点可以在 DLL 中指定,操作系统的 DLL 加载器知道如何查找它。
“运行 DLL”是什么意思?DLL 不是普通程序,它们只是函数的集合。除了初始化 DLL 中其他函数所需的内容外,入口点本身通常不会做太多事情。加载 DLL 时会自动调用入口点(您可以使用它LoadLibrary
来执行此操作)。
如果您想在加载 DLL 后调用特定的函数,您可以使用GetProcAddress
来获取指向您想要的函数的指针。