天天看點

Dll等資源嵌入到exe檔案中,運作時釋放

//DLL作為資源嵌入到程式中
        HRSRC hRes = FindResource(NULL, MAKEINTRESOURCE(IDR_DLL1), _T("DLL"));
        if(NULL == hRes) 
            return ; 
        
        DWORD dwSize = SizeofResource(NULL, hRes); 
        if(0 == dwSize) 
            return ; 
        
        HGLOBAL hGlobal = LoadResource(NULL, hRes); 
        if(NULL == hGlobal) 
            return ; 
        
	LPBYTE lpRes = (LPBYTE)::LockResource(hGlobal);
	resource_zip_buffer_ = new BYTE[ dwSize ];
	if (resource_zip_buffer_ != NULL && lpRes != NULL )
	{
		::CopyMemory(resource_zip_buffer_, lpRes, dwSize);
	}


	::FreeResource(hResource);


	{
		FILE*pfile = NULL;
		pfile = fopen( "..\\***.Dll", "wb+" );
		if ( pfile )
		{
			fwrite( resource_zip_buffer_, dwSize, 1, pfile );
			fclose( pfile ); 
		}
	}

        FreeResource (hGlobal);

	if ( resource_zip_buffer_ )
	{
		delete [] resource_zip_buffer_;
		resource_zip_buffer_ = NULL;
	}
           

繼續閱讀