windows服务调用LoadLibrary的时候,LoadLibrary不返回任何值,貌似是被阻塞了,但是用exe调用LoadLibrary没问题,dll没有用到任何外部库,只用了ntdll.dll和kernel32.dll两个库,应该也不存在模块找不到的问题,dll是一个标准dll,请问导致LoadLibrary阻塞的原因是什么?如何解决?谢谢!

解决方案 »

  1.   

    服务:
    puiHandle[ucIndex] = (long)LoadLibrary(acFilePath);
    dll:
    BOOL APIENTRY DllMain(HANDLE hModule, 
      DWORD  ul_reason_for_call, 
      LPVOID lpReserved
      )
    {
        return TRUE;
    }extern "C" EXPORT SAnswerData* _OnRequestData(SRequestData* pstRequest)
    {
    return g_Market.OnRequestData(pstRequest);
    }extern "C" EXPORT SAnswerData* _OnVerifyRequest(SMRequestData* pstRequest, unsigned short& usSize)
    {
    return g_Market.OnVerifyRequest(pstRequest, usSize);
    }
    还有几个引出函数,没什么营养,就不在此罗列了
      

  2.   

    Dll在Load时会调用一些东西比如:全局变量初始化, Dllmain ...你可以用VC调试加载Dll的进程, 然后暂停, 找到Load的线程查看CallStack, 看在哪出问题我估计是你变量初始化有问题, 服务里跟普通程序用户是不一样的, 某些代码会出现问题...