VC程序运行时导出资源、DLL、EXE
来源:互联网 发布:bbc有声双语新闻软件 编辑:程序博客网 时间:2024/05/01 00:08
在VC可以在可执行程序和调用动态静态库时动态的导出资源、DLL、exe。
首先把想要导出的资源导入,这里简单描述DLL资源导入的步骤:
1.在Resource View(资源视图)中查找到相应工程;
2.使用Add(添加)->Resource(资源);
3.选择Imort(插入)资源;
4.在选择资源后弹出Custom ResourceType(自定义资源类型)输入自定义的类型名,至此资源插入完毕;
所需函数:
FindResource确定指定模块中指定类型和名称所在的位置
- HRSRC FindResource(HMODULE hModule,
- LPCTSTR lpName,
- LPCTSTR lpType)
hModule处理包含资源的可执行文件的模块,NULL值指定了模块句柄指向操作系统通常情况下创建最近过程的相关文件;
lpName指定资源名称;
lpType指定资源的类型,就是上面所自定义资源类型;
SizeofResource返回指定资源字节数大小
- DWORD SizeofResource(HMODULE hModule,
- HRSRC hReslnfo)
hModule包含资源的可执行文件的句柄,如果为空当前文件(我是这么理解的);
hReslnfo资源句柄,句柄必须使用FindResource函数创建;
如果返回0则失败,通过DWORD的寻址范围可看出文件的最大大小;
LoadResource该函数装载指定资源到全局储存器
- HGLOBAL LoadResource(HMODULE hModule,
- HRSRC hReslnfo)
参数同上
如果运行成功返回相关资源的句柄,如果运行失败返回NULL
LockResource锁定内存中的指定资源;
- LPVOID LockResource(HGLOBAL hResData)
失败返回NULL,成功返回资源指针,可以重IO输出成文件
释放相关资源函数:
CloseHandle ()
FreeResource ()
代码如下:- HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDR_DLL1), TEXT("DLL"));
- if (NULL == hRsrc){
- return;}
- DWORD dwSize = SizeofResource(NULL, hRsrc);
- if (0 == dwSize){
- return;}
- HGLOBAL gl = LoadResource(NULL, hRsrc);
- if (NULL == gl){
- return;}
- LPVOID lp = LockResource(gl);
- if (NULL == lp){
- return;}
- CString filename="dd.dll";
- HANDLE fp= CreateFile(filename ,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);
- DWORD a;
- if (!WriteFile (fp,lp,dwSize,&a,NULL)){
- return;}
- CloseHandle (fp);
- FreeResource (gl);
0 0
- VC程序运行时导出资源、DLL、EXE
- VC程序运行时导出资源、DLL、EXE
- VC程序运行时导出资源、DLL、EXE
- VC程序运行时导出资源、DLL、EXE
- VC程序编译成exe后需msvcr100.dll、msvcp100.dll才能运行的解决方法
- vc 运行exe时生成dll的方法
- VC释放资源文件DLL,EXE等。。。
- 运行程序exe无法启动,dll找不到
- 运行exe时找不到dll
- 利用rundll32.exe来运行自定义的dll导出函数
- Dll等资源嵌入到exe文件中,运行时释放
- vs2010生成的exe程序在运行时,提示计算机丢失mfc100d.dll文件
- 运行exe程序,说缺少某dll文件
- vc中将一个独立的dll(exe),作为资源加入资源文件中
- vc中将一个独立的dll(exe),作为资源加入资源文件中
- VC中DLL导出函数时注意事项
- VC DLL导出函数
- VC++ DLL 导出函数
- Netfilter/iptables 简要分析
- hdu1789 Doing Homework again (贪心+优先队列)
- 数据行业从业者到底能挣多少钱?
- 减小数组
- EditText属性
- VC程序运行时导出资源、DLL、EXE
- 海量数据挖掘MMDS week3:流算法Stream Algorithms
- TIME_WAIT是什么?
- MyBatis的foreach语句详解
- Maven:mirror和repository 区别
- swift基础知识<一>
- 路漫漫其修远兮~~~
- 封装好的网络请求类
- 结构体的嵌套问题