首页 > 其他分享 >编写、引用资源DLL步骤

编写、引用资源DLL步骤

时间:2023-09-19 10:33:10浏览次数:40  
标签:hDll return stream 步骤 DLL xx hrsRC 编写



创建纯资源 DLL 时要求 /NOENTRY 选项。(VS链接选项中设置无入口)

使用该选项防止 LINK 将 _main 的引用链接到 DLL 中。



VC版:

1、向导生成一个DLL名为456

 

2、新建xx.h  内容:

     #define PNG1   10000

 

     新建一个TEXT文档

     编辑内容如下:

     #include "xx.h"

     //编辑需要的资源(本示例为自定义类型,标准类型可google)

     如:PNG1 PNG "c:/123.png"

     保存为xx.rc

 

 

3、将xx.rc、xx.h添加进DLL工程文件

 

4、编译

 

5、引用DLL资源 ,其实主要就是FindResource LoadResource LockResource三个API的应用

// TODO: Add extra cleanup here
 HMODULE hDll=LoadLibrary("456.dll");
 
 if(!hDll)
 return ;
 HRSRC hrsRC=FindResource(hDll,MAKEINTRESOURCE(PNG1),"PNG");
  if (!hrsRC)
  {
    int err=GetLastError();
    return ;
  }
  
  HGLOBAL hgb=LoadResource(NULL,hrsRC);
  if (!hgb)
  {
    return ;
  }
  LPVOID Buf=LockResource(hgb);
  FILE* fp=fopen("c://idr.png","wb+");
  if (fwrite(Buf,SizeofResource(NULL,hrsRC),1,fp)==-1)
  {
    return ;
  }
  fclose(fp);
  FreeLibrary(hDll);

 


 

BCB版:

BCB将此封装成一个流类,直接引用此类即可,示例:

 

1、新建一个TEXT文本 编辑 E1 EXEFILE "c:/123.exe"

    保存为xx.rc

 

2、将此RC文件添加进工程

 

3、引用:

 

TResourceStream* stream;
    try
    {
        stream=new TResourceStream((UINT)HInstance,"E1","EXEFILE"); //
        if(stream)
        {
            stream->SaveToFile("c:/456.exe");
        }
    }
    __finally
    {
       delete stream;
    }

 

 

标签:hDll,return,stream,步骤,DLL,xx,hrsRC,编写
From: https://blog.51cto.com/u_15487030/7522627

相关文章

  • Windows平台配置VSCode编写MinGW Qt
    Windows平台配置VSCode编写MinGWQt下载Qt官网下载链接,此处下载了开源版的在线安装器:!DownloadQt:GetQtOnlineInstaller(需要其他版本或下载源可自行搜索相关文章)VSCode官网:VisualStudioCode-Codeediting.RedefinedQt安装该版本在线下载器刚打开需要登录......
  • 视频汇聚/视频云存储/视频监控管理平台EasyCVR分发rtsp流起播慢优化步骤详解
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的......
  • 视频汇聚/视频云存储/视频监控管理平台EasyCVR分发rtsp流起播慢优化步骤详解
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的......
  • 一文读懂Java类型转化:提升编程效率的关键步骤
    java数据类型类型转化Java类型转化是将一个数据类型的值转换为另一个数据类型的值的过程。在Java中,类型转化分为自动类型转化(隐式类型转化)和强制类型转化(显式类型转化)。自动类型转化(隐式类型转化):当两个不同类型的数据进行运算时,Java会自动将高精度的数据类型转换为低精度的数据......
  • FSICO-BACOS单机四节点到Webase平台搭建简洁步骤
    bashbuild_chain.sh-l127.0.0.1:4-p30300,20200,8545其中-l指定ip列表,-p表示p2p,....端口号,生成的四个节点端口号为30300~30303安装ubuntu依赖sudoaptinstall-yopensslcurl安装centos依赖sudoyuminstall-yopensslopenssl-devel第二步.创建操作目......
  • 学习后的顺序表(结点内容只设学号、姓名),表内采用数组,数组0位存放数据,相关的函数均按此
    #include<iostream>#include<string.h>usingnamespacestd;typedefstruct{ intid; stringname;}Node;//结点定义typedefstruct{ Node*element;//基地址(动态长度) intlength;//表长}Linklist;#defineMAXSIZE100//最大长度voidmenu();//声明菜单函数voidCreatelist(Lin......
  • vim插件使用python编写+AXI非对齐传输如何发送+verdi配置搜索顺序+verible和verilator
    vim插件使用python编写虽然vim有自己的一套语法格式,但是学习成本放着呢,语言那么多,啥都学哪学的过来嘛。不过vim确实是支持python的,但是是python2,而不是python3,因此语法上的一些问题要兼容下。这个是官方手册,正确而可靠的部分。https://vimdoc.sourceforge.net/htmldoc/if_pyth......
  • linux环境下安装nginx步骤
    linux环境下安装nginx步骤开始前,请确认gccg++开发类库是否装好,默认已经安装。ububtu平台编译环境可以使用以下指令apt-getinstallbuild-essentialapt-getinstalllibtoolcentos平台编译环境使用如下指令安装make:yum-yinstallgccautomakeautoconf......
  • Linux上Oracle 11g安装步骤图解
    Oracle11g安装准备工作目录Oracle11g安装准备工作Oracle11g下载地址:Oracle11g 联机文档:Oracle11gR2数据库安装硬件配置要求:Linux平台需要的软件包支持:创建Oracle用户修改内核参数修改用户限制修改用户验证选项修改用户配置文件安装目录配置修改用户bashsh......
  • Linux安装JDK完整步骤
    1、检查一下系统中的jdk版本[root@localhostsoftware]#java-version显示:openjdkversion"1.8.0_102"OpenJDKRuntimeEnvironment(build1.8.0_102-b14)OpenJDK64-BitServerVM(build25.102-b14,mixedmode)2、检测jdk安装包[root@localhostsoftware]#rpm......