微软文档中说不要在DLLMain中调用
GdiplusStartup 或 GdiplusShutdown,不然会发生死锁,偶试了一试,的确程序会没响应的,偶就想不通了, 到底为啥会这个样子瓦。

解决方案 »

  1.   

    因为一个DLL有可能被应用程序加载多次,如果将GdiplusStartup 或 GdiplusShutdown写在DLLMain中,它们就可能执行多次,而它们只允许执行一次,并且应该是配对的。
      

  2.   

    可以分别在CXApp::InitInstance和CXApp::ExitInstance中调用。
      

  3.   

    在程序中GdiplusStartup是可以多次加载的,没有任何问题,但为什么在DLL中就会出现死锁呢?(跟踪DLL发现也就执行一次啊,但在调用GdiplusShutdown时就被死锁了)
      

  4.   

    LoadLibrary不能嵌套的,估计GdiplusStartup载入了什么DLL
      

  5.   

    jiangsheng(蒋晟.MSMVP2004Jan) 至于它加载了什么,应该可以借助工具查看得到吧
    我手头倒是有个类,只需使用它,不要管gdi+带来的附带问题,如初始化等,不知是否可用
      

  6.   

    To solve the problem, you can add two new entry points to your DLL, and tell your applications to call them.For example:void InitializeMyDLL();
    void TerminateMyDLL();