zoukankan      html  css  js  c++  java
  • Delphi 中将一些 Dll等生成资源文件打包成一个独立的EXE程序方法步骤

    资源文件一般为扩展名为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;

  • 相关阅读:
    websocket初体验(能传文字和图片)
    展开折叠效果 height未知 transition无效
    微信小程序自定义键盘
    微信小程序 selectComponent 值为null
    css 斜线 animation
    【转】怎样在ubuntu12.04下创建一个启动器
    以ontouch为例说明android事件发送机制
    谈谈移动应用设计——从一个普通开发者的角度
    Launch error: Failed to connect to remote VM. Connection refused.的解决办法
    Beyond compare代码比较工具。
  • 原文地址:https://www.cnblogs.com/zhenfei/p/4508936.html
Copyright © 2011-2022 走看看