现在有一个动态库a.dll,希望把它封装到b.dll中。采用做法如下:
建立win32 dll,加入一个资源文件,然后建立一个“DLL”类型,再选择import导入a.dll。设置string value。使用方法如下:
HINSTANCE save_hInstance = AfxGetResourceHandle(); 
       AfxSetResourceHandle(hDll);          
        CString Type="DLL";         
      hSrc = ::FindResource(hDll,  MAKEINTRESOURCE(IDR_FLASH), Type); 
HGLOBAL gl= ::LoadResource (hDll,hSrc); 
         if (gl == NULL)
 {
 AfxMessageBox("无法加载dll");
 }
        。
结果gl总是为NULL,动态库中的建立应该没有问题,因为我试过如果采用相同方法在a.dll中封装位图,没有一点问题。但是封装动态库的时候就不行了。
不知道是不是还有什么其它设置?
请大家指教

解决方案 »

  1.   

    hSrc = ::FindResource(hDll,  MAKEINTRESOURCE(IDR_FLASH), Type); 返回正确不?
      

  2.   

    查过了,FindResource没有成功
    很奇怪,如果调用位图资源就可以成功,但是调用动态库资源就不行。
    难道是建立win32 dll的时候要作一些什么处理吗?
      

  3.   

    包装到里面没试过,难道不能用两个DLL吗?
      

  4.   


    GetLastError看看错误值是啥是不是你的Type类型的问题,或者hDLL有问题。
      

  5.   

    楼主上面贴的代码是在exe中的吧,试试在b.dll中自行释放a.dll的方法
      

  6.   

    不会是想把别人的dll封装到自己的dll中吧?
      

  7.   

    用GetLastError后,发现问题为:
    ERROR_RESOURCE_NAME_NOT_FOUND
    The specified resource name cannot be found in the image file.  
    没有找到资源,但是为什么封装位图就可以,封装dll就出现这个问题?
    我换了type类型也不行,hDll没有问题,已经检验过了。
      

  8.   

    7楼说的方法如何实现啊?没用过8楼说对了,封装了一个皮肤dll,打算使用的时候释放到缓存文件夹,然后再使用
    主要是怕别人看到了不好,呵呵
      

  9.   

    参考我的回复http://topic.csdn.net/u/20080717/08/47eb158b-e5f6-4862-b260-8378f87c1719.html
      

  10.   

    谢谢11楼,看了你的链接,和我的做法是一样的。我在释放位图文件的时候没有问题,就是处理dll的时候不行了。