查阅了相关资料后得知使用dll时避免在DllMain中创建网络套接字,但是我又需要在执行到dll时自动完成套接字的操作,请教有什么好的方法可以做到?

解决方案 »

  1.   

    在DLL_PROCESS_ATTACH时就可以创建,但是那时网络环境可能还没来得及初始化.如果是显式load的,可以在load这个DLL之前初始化网络环境.
    BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
     )
    {
        switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
                         g_socket = socket(...);
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
    g_hInst = (HMODULE)hModule;
        }
        return TRUE;
    }
      

  2.   

    那么我应该将bind等操作的代码放置在哪里呢?