1. 初始化动态链接库需要用的的结构
static AFX_EXTENSION_MODULE GameServerDLL={NULL,NULL};
2. DLL导出主函数
extern "C" int APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
}
3. 让编译器不必检测你的警告,告诉编译器lpReserved参数已使用
UNREFERENCED_PARAMETER(lpReserved);
4. 当一个DLL被首次载入进程地址空间时,系统会调用该DLL的DLLMain函数,传递的参数fdwReason为DLL_PROCESS_ATTACH
if (dwReason==DLL_PROCESS_ATTACH)
{
//生成扩展DLL的拷贝
if (!AfxInitExtensionModule(GameServerDLL,hInstance)) return 0;//初始化扩展DLL
//DLL将输出CRuntimeClass对象或者具有它自己的资源,需要在DllMain中创建CDynLinkLibrary对象。
new CDynLinkLibrary(GameServerDLL);
}
5.&nbs

本文详细介绍了在网狐子游戏工程的GameServer.cpp中,C++动态链接库的入口函数dllmain的工作原理。讨论了DLL初始化、导出主函数、编译器警告处理以及DLL加载和卸载时的生命周期事件DLL_PROCESS_ATTACH和DLL_PROCESS_DETACH。
订阅专栏 解锁全文
3万+

被折叠的 条评论
为什么被折叠?



