Delphi 中将一些 Dll等生成资源文件打包成一个独立的EXE程序方法步骤
2015-05-16 23:41
1466 查看
资源文件一般为扩展名为res的文件,其自带的资源编译工具BRCC32.EXE(位于/Delphi/BIN目录下)
1.编写rc脚本文本
用记事本或其它文本编辑器编写一个扩展名为rc的文件,格式分别为在资源文件中的名称->类型->实际文件名称。
例如:要将文件名 demo.Dll的文件打包成一个资源文件,首先 新建一个文本文档,输入内容
mydemoDll RCDATA demo.DLL
mydemoDll 和 RCDATA 你可以随便写,这个是为了在使用资源时定义的名称和类型你也可以写成:a b demo.DLL
将文本保存,保存后将文本的后缀(.txt)改成(.rc)
2.将rc文件编译成res资源文件
将脚本文件和实际文件拷到Brcc32.EXE所在目录,执行DOS命令。格式为:Brcc32 脚本文件(回车),
例如:
将上面的Mydll.rc和demo.Dll拷到Brcc32.EXE所在目录,执行 Brcc32 Mydll.rc(回车)即可。如果编译成功,则会生成一个Mydll.res的文件,这个文件就是我们需要的资源文件。
3.在Delphi单元中加入资源文件
将生成的res资源文件拷贝到你所编程序的路径下,在单元文件{$R *DFM}后加上一句{$R Mydll.res},则将res文件加入去,编译后资 源文件即已包含在可执行文件中了。若你有多个资源文件,也按上法依次加入。
注意:如果成功, 会发现编译后的 Exe 程序大小会突然增大(加入了Dll 文件的大小)
PS:在Delphi程序中也可调用资源文件(也可以在EXE中运行资源文件,如在EXE中直接运行另外一个EXE,或者调用DLL等,篇幅原因就不写了)
示例如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R mydll.RES}
//释放资源文件到指定文件夹,参数1:资源名称 参数2 资源类型,参数3:存放目录
function ExtractRes(ResName,ResType, ResNewName: string): boolean;
var
Res: TResourceStream;
begin
try
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
try
Res.SavetoFile(ResNewName);
Result := true;
finally
Res.Free;
end;
except
Result := false;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ExtractRes('mydemoDll','RCDATA','d:/aaa.dll');
end;
1.编写rc脚本文本
用记事本或其它文本编辑器编写一个扩展名为rc的文件,格式分别为在资源文件中的名称->类型->实际文件名称。
例如:要将文件名 demo.Dll的文件打包成一个资源文件,首先 新建一个文本文档,输入内容
mydemoDll RCDATA demo.DLL
mydemoDll 和 RCDATA 你可以随便写,这个是为了在使用资源时定义的名称和类型你也可以写成:a b demo.DLL
将文本保存,保存后将文本的后缀(.txt)改成(.rc)
2.将rc文件编译成res资源文件
将脚本文件和实际文件拷到Brcc32.EXE所在目录,执行DOS命令。格式为:Brcc32 脚本文件(回车),
例如:
将上面的Mydll.rc和demo.Dll拷到Brcc32.EXE所在目录,执行 Brcc32 Mydll.rc(回车)即可。如果编译成功,则会生成一个Mydll.res的文件,这个文件就是我们需要的资源文件。
3.在Delphi单元中加入资源文件
将生成的res资源文件拷贝到你所编程序的路径下,在单元文件{$R *DFM}后加上一句{$R Mydll.res},则将res文件加入去,编译后资 源文件即已包含在可执行文件中了。若你有多个资源文件,也按上法依次加入。
注意:如果成功, 会发现编译后的 Exe 程序大小会突然增大(加入了Dll 文件的大小)
PS:在Delphi程序中也可调用资源文件(也可以在EXE中运行资源文件,如在EXE中直接运行另外一个EXE,或者调用DLL等,篇幅原因就不写了)
示例如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R mydll.RES}
//释放资源文件到指定文件夹,参数1:资源名称 参数2 资源类型,参数3:存放目录
function ExtractRes(ResName,ResType, ResNewName: string): boolean;
var
Res: TResourceStream;
begin
try
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
try
Res.SavetoFile(ResNewName);
Result := true;
finally
Res.Free;
end;
except
Result := false;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ExtractRes('mydemoDll','RCDATA','d:/aaa.dll');
end;
相关文章推荐
- vc中将一个独立的dll(exe),作为资源加入资源文件中
- vc中将一个独立的dll(exe),作为资源加入资源文件中
- C#中将所有引用的DLL 和exe文件打包成一个exe文件
- 使用VS进行打包程序解决生成两个文件的问题(压缩后只有一个exe)
- 在python中调用dll,并将dll以及python合并打包成一个exe文件的方法
- 将Matlab GUI 文件打包成独立运行的exe程序的步骤
- 使用WinRar将Qt编译生成的exe和依赖的dll文件打包为一个exe文件的简单方法
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- Qt技巧:Win7下打包发布Qt程序(解释的比较清楚,把exe和dll伪装合并成一个文件)
- LoadResourceDll类,载入资源中的动态链接库(dll)文件,把DLL打包到EXE文件里面
- 把C#程序(含多个Dll)合并成一个Exe的超简单方法
- 程序在vs2010下能运行,独立运行生成的exe文件时会崩溃。
- 添加一个文件夹及一些文件如何使用git生成patch git补丁 新文件 图片资源文件
- delphi制作资源文件(一)一个A.exe释放出B.exe
- delphi制作资源文件(二)一个A.exe释放出B.exe 并且修改b.exe变量的值
- 把C#程序(含多个Dll)合并成一个Exe的超简单方法
- 把C#程序(含多个Dll)合并成一个Exe的超简单方法
- 把C#程序(含多个Dll)合并成一个Exe的超简单方法
- 把C#程序(含多个Dll)合并成一个Exe的超简单方法
- 打包过程vs2010(包含卸载功能、生成一个exe文件)