具体情况是这样的。
HINSTANCE g_hRes = LoadLibrary(...);这一步没问题。::LoadBitmap(g_hRes, MAKEINTRESOURCE(IDB_BITMAP));
这一步就有问题了,当第一此调用的时候正确,再调用的时候就返回空,而且此时getlasterr()是87.
我可以确定的是,在第二次调用值钱绝对没有FreeLibrary(g_hRes);

解决方案 »

  1.   

    实际上我发现了,可能和loadbitmap没有什么关系,虽然msdn上说它被loadimage取代了。
    我把Whole Program optimazition这个编译选项改为Enable link-time code generation (/GL)了。发生了这个问题。
    而我换会NO之后就好了,此之怪也
      

  2.   

    调试看看g_hRes的值是不是改变了。
      

  3.   

    87表示ERROR_INVALID_PARAMETER,可能某个参数不合法
      

  4.   

    你的 LoadLibrary加载的是动态链接库吗?如果是的,有个问题要考虑到,那就是对于规则DLL,在主程序中调用的时候,要注意资源的切换。
      

  5.   

    HINSTANCE save_hInstance = AfxGetResourceHandle();
    AfxSetResourceHandle(g_dllInstance);     // g_dllInstance为你的资源动态库句柄
      
     // 读取位图
     ....
    AfxSetResourceHandle(save_hInstance);
      

  6.   

    g_hRes值为什么会变?确实,提示是参数错误,但没有确定是不是这个值变了,因为这个值我只加载了一次,如果不是便宜选项优化了什么东西把它优化歪了,我想g_hRes是不会变的