文档章节

学习使用资源文件[11] - DLL 中的资源文件

涂孟超
 涂孟超
发布于 2014/09/26 15:38
字数 348
阅读 7
收藏 0
点赞 0
评论 0

本例将把一张 bmp 图片, 以资源文件的方式嵌入 dll, 然后再调用.

第一步: 建一个 DLL 工程, 如图:


然后保存, 我这里使用的名称都是默认的.

第二步: 建一个资源原文件, 如图:


编辑内容如下(路径中的文件一定要存在):
img1 BITMAP "c:\temp\test.bmp"

然后, 取个名(后缀须是 rc, 我这里取名为 Res.rc), 保存在工程目录下.

第三步: 在 DLL 工程中添加这个资源原文件, 如图:


此时, 工程源文件中会添加一句: {$R 'Res.res' 'Res.rc'}, 我们需要的源文件这样即可: library Project1; {$R 'Res.res' 'Res.rc'} begin end. 然后 Ctrl+F9 编译; 此时在工程目录下会生成我们需要的 Project1.dll.

第四步: 把刚才的 Project1.dll 文件复制到 c:\temp 下.
这样过会我们可以通过 c:\temp\Project1.dll 找到这个文件. 至此 DLL 制作完毕.

第五步: 重新建一个 VCL Forms Application 工程, 代码如下:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject);
var
  h: THandle;
  bit: TBitmap;
begin
  h := LoadLibrary('c:\temp\Project1.dll'); {载入 DLL}

  bit := TBitmap.Create;
  bit.LoadFromResourceName(h, 'img1');      {提取资源}

  Canvas.Draw(10, 10, bit);                 {在窗体上绘制图片}

  FreeLibrary(h);                           {载卸 DLL}
  bit.Free;
end;

end.

 
 
 
 
 

 

 

  
//效果图:


© 著作权归作者所有

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
dll文件

2016年9月3日11:35:42dll文件:DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于Windows的程序在Win...

anlve ⋅ 2016/11/15 ⋅ 0

Globalization & Resources

http://blog.csdn.net/etmonitor/ .NET系统学习----Globalization & Resources l 前言 l 了解资源文件 l 创建资源文件 l 在程序中使用资源文件 l 资源文件的命名和部署 l 参考 前言: 在学习...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

[16]Windows PowerShell DSC学习系列---基于Class风格定制DSC资源?

前面的章节介绍了,[15]Windows PowerShell DSC学习系列---基于.NET DLL(C#) 定制DSC资源?和 [11] Windows PowerShell DSC学习系列---如何定制一个基于PowerShell脚本实现的DSC Resource,这...

chancein007 ⋅ 2017/02/13 ⋅ 0

海莲花APT组织最新攻击样本分析

  0×1 概况   海莲花(OceanLotus)也叫APT32或APT-C-00,是一个长期针对中国及其他东亚国家(地区)政府、科研机构、海运企业等领域进行攻击的APT组织。近日腾讯御见威胁情报中心捕获到...

FreeBuf ⋅ 05/02 ⋅ 0

模块句柄(实例句柄)和句柄的区别

看过windows核心编程的都知道有很多概念。同时如果你不只对windows有所了解,对linux mac等 *unix操作系统也有所了解的话。可能会出现有的东西都重合,而有的没有。这里说下win下句柄概念。 ...

土匪猿 ⋅ 05/15 ⋅ 0

Dll释放可执行文件

Dll释放可执行文件用途很广泛。一种实现木马注入的方法就是将dll加载到某进程的地址空间后释放木马。接下来 介绍下详细的步骤,为后来者提供参考。 需要释放的文件首先必须以资源的形式存储在...

长平狐 ⋅ 2012/10/08 ⋅ 0

Mini 容器学习笔记1——环境搭建(基础篇)

一. 环境下载 到Mini 容器的官方网站下载NLite框架的二进制文件,下载并解压后就可以了。 我们使用NLite框架需要用到下面的文件: NLite.dll(必要) 二. 建立NLite应用程序 新建一个控制台应用...

netcasewqs ⋅ 2011/08/26 ⋅ 0

VC++动态链接库(DLL)编程[精]

1.概论   先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库...

barsoom ⋅ 2012/12/07 ⋅ 1

JNA调用DLL函数遇到的几个问题

最近一个JSP项目需要用到分词模块,而分词模块实用C++写成的DLL库。于是上网搜各种方法,最后选择了JNA作为JSP调用DLL的工具。 JNA(Java Native Access )提供一组Java工具类用于在运行期动...

雷霄骅 ⋅ 2013/09/30 ⋅ 0

dll的概念 dll导出变量 函数 类 (转)

1、 DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数、变量或类。这些可以直接拿来使用。 静态链接库与动态链接库的区别: (1)静态链接库与动态链接库都是共...

长平狐 ⋅ 2012/10/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

iExec Blockchain Marketplace for Cloud

iExec Releases the First-Ever Blockchain Marketplace for Trading Cloud Computing Berlin, Germany, May 29, 2018. iExec has released its blockchain-based decentralized cloud marke......

openthings ⋅ 9分钟前 ⋅ 0

OSChina 周二乱弹 —— 加班的代码不要枉费了我的童子功

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《29》- 未完成乐队 《29》- 未完成乐队 手机党少年们想听歌,请使劲儿戳(这里) @FalconChen :#看球提醒# 02:00 巴西v...

小小编辑 ⋅ 29分钟前 ⋅ 11

Docker Swarm的前世今生

概述 在我的《Docker Swarm集群初探》一文中,我们实际体验了Docker Swarm容器集群技术的魅力,与《Kubernetes实践录》一文中提到的Kubernetes集群技术相比,Docker Swarm没有Kubernetes显得...

CodeSheep ⋅ 今天 ⋅ 0

骰子游戏代码开源地址

因为阿里云现在服务器已经停用了,所以上面的配置已经失效。 服务端开源地址:https://gitee.com/goalya/chat4.git 客户端开源地址:https://gitee.com/goalya/client4.git 具体运行界面请参考...

算法之名 ⋅ 今天 ⋅ 0

设计模式--装饰者模式

装饰者模式 定义 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 通用类图 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比...

gaob2001 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部