我想在运行时,把它释放出来,这样可以么?

解决方案 »

  1.   

    当然可以
    但是,如果你的exe依赖于此dll,那么exe一开始就无法运行啊除非,这样:
    exe:A
    dll:B
    其中A的运行依赖于B。
    你再做一个exe:C,在C运行时将A、B释放出来,然后运行A即可
      

  2.   

    具体怎么加入、释放资源这个就不必多说了吧加入资源:Insert-Resource-Import
    要求填入类型名称,随便填个即可,比如“EXEANDDLL”释放资源: ////////////////////////////////////////////
    // 加载资源、生成文件
    //定位我们的自定义资源,这里因为我们是从本模块定位资源,所以将句柄简单地置为NULL即可
    HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDR_XXXXXX), TEXT("EXEANDDLL"));//IDR_XXXXXX就是你刚才导入的a.exe或b.dll的ID了
    if (NULL == hRsrc)
    return FALSE;
    //获取资源的大小
    DWORD dwSize = SizeofResource(NULL, hRsrc); 
    if (0 == dwSize)
    return FALSE;
    //加载资源
    HGLOBAL gl = LoadResource(NULL, hRsrc); 
    if (NULL == gl)
    return FALSE;
    //锁定资源
    LPVOID lp = LockResource(gl); 
    if (NULL == lp)
    return FALSE;



    CString filename="a.exe";//保存的临时文件名

    // CREATE_ALWAYS为不管文件存不存在都产生新文件。
    HANDLE fp= CreateFile(filename ,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);

    DWORD a;

    //sizeofResource 得到资源文件的大小

    if (!WriteFile (fp,lp,dwSize,&a,NULL))
    return false;

    CloseHandle (fp);//关闭句柄
    FreeResource (gl);//释放内存
      

  3.   

    我正是想这么做,可是怎样将.dll和.exe加入资源呢?  我把dll后缀改成bmp,把它当作bitmap添加也没有成功。