vc中有办法将 一个独立的dll,作为资源加入.rc资源文件中么? 我想在运行时,把它释放出来,这样可以么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当然可以但是,如果你的exe依赖于此dll,那么exe一开始就无法运行啊除非,这样:exe:Adll:B其中A的运行依赖于B。你再做一个exe:C,在C运行时将A、B释放出来,然后运行A即可 具体怎么加入、释放资源这个就不必多说了吧加入资源: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);//释放内存 我正是想这么做,可是怎样将.dll和.exe加入资源呢? 我把dll后缀改成bmp,把它当作bitmap添加也没有成功。 高分求救 进程 句柄问题 如何声明一个公用的对象成员? 链接错误 [求助]CEditView中如何显示行号 请教个界面设计的问题 求救。关于UDP的包文发送 为什么我的程式会出现这样的提示:"(?frame_no@@3HA) already defined in smbtest.obj",是什么原因造成的? 请大家给答一下:又一个关于句柄的后继问题,一个类只能有一个句柄吗等? 有关系统调用的菜鸟问题 vc编译错误C1010该如何解决? 如何用程序改变windows的虚拟内存的大小, 请教:读取磁盘文件的时候,缓冲区一般是多大?
但是,如果你的exe依赖于此dll,那么exe一开始就无法运行啊除非,这样:
exe:A
dll:B
其中A的运行依赖于B。
你再做一个exe:C,在C运行时将A、B释放出来,然后运行A即可
要求填入类型名称,随便填个即可,比如“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);//释放内存