免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持APP、电脑端、小程序、IOS免签等等

delphi dll封装exe

Delphi是一款功能强大的编程语言,其构造的可执行文件(EXE)和动态链接库(DLL)可以嵌套或封装在一起。封装DLL和EXE到一个单一的可执行项可以简化您的应用程序的部署。这篇文章将为您详细介绍在Delphi中如何将DLL封装到EXE文件中,以及相关的原理和适用场景。

## 原理

Delphi中将DLL封装到EXE的原理是使用资源 (Resource) 功能。资源可以包含诸如位图、光标、图标等,这些资源需要在程序运行时加载。同样地,我们可以将一个DLL放入已包含资源的EXE之中,然后在程序运行时动态加载和卸载这些资源。

## 步骤

### 1. 创建一个DLL项目

首先,我们需要创建一个DLL项目。如下所示:

1. 打开Delphi。

2. 开启一个新的项目 (File > New > Project > DLL)。

3. 添加一些函数和过程,以供在EXE项目中调用。

例如:

```delphi

library TestDll;

uses

SysUtils,

Classes;

function Add(a, b: Integer): Integer; stdcall;

begin

Result := a + b;

end;

exports

Add;

begin

end.

```

保存您的DLL项目,然后将其编译。接下来,我们将创建一个EXE项目以便嵌入这个DLL。

### 2. 创建一个EXE项目

1. 创建一个新的VCL表单应用项目 (File > New > Project > VCL Forms Application)。

2. 添加一个按钮控件,从而在用户单击时执行DLL中的相关函数。

3. 在项目源码中添加以下代码,引用并调用加载和卸载封装在资源中的DLL。

例如:

```delphi

unit MainForm;

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,

System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type

TMainForm = class(TForm)

btnAdd: TButton;

procedure btnAddClick(Sender: TObject);

private

procedure LoadDLLFromResource(aResName, aResType: String);

procedure FreeLoadedDLL;

function GetTempFolder: String;

public

end;

var

MainForm: TMainForm;

hDLL: THandle;

implementation

{$R *.dfm}

function Add(a, b: Integer): Integer; stdcall; external 'TestDll.dll';

procedure TMainForm.btnAddClick(Sender: TObject);

begin

LoadDLLFromResource('TestDll', 'DLL');

ShowMessage(IntToStr(Add(3, 4))); // Call Add function from TestDll.dll

FreeLoadedDLL;

end;

procedure TMainForm.LoadDLLFromResource(aResName, aResType: String);

var

rs: TResourceStream;

fs: TFileStream;

TargetPath: String;

begin

rs := TResourceStream.Create(HInstance, aResName, PChar(aResType));

try

TargetPath := GetTempFolder + aResName + '.dll';

fs := TFileStream.Create(TargetPath, fmCreate);

try

fs.CopyFrom(rs, rs.Size);

finally

fs.Free;

end;

finally

rs.Free;

end;

hDLL := LoadLibrary(PChar(TargetPath));

end;

procedure TMainForm.FreeLoadedDLL;

begin

if hDLL <> 0 then

begin

FreeLibrary(hDLL);

hDLL := 0;

end;

end;

function TMainForm.GetTempFolder: String;

var

TempPath: array[0..MAX_PATH - 1] of Char;

begin

GetTempPath(MAX_PATH, TempPath);

Result := StrPas(TempPath);

end;

end.

```

在上述代码中,我们实现了:

1. 将DLL从资源中提取到用户计算机上的临时文件夹;

2. 动态加载DLL,并调用其中的“Add”函数;

3. 卸载DLL库。

### 3. 将DLL嵌入到EXE的资源中

1. 打开创建的EXE项目,选择 Project > Resources and Images。

2. 创建一个新资源,类型为 `DLL`,名为 `TestDll`。

3. 导入步骤1中编译好的DLL文件,点击"OK"以保存。

4. 在项目源码中,在`implementation`关键字之前的`{$R *.dfm}`下面,添加一行代码 `{$R 'TestDll.res'}`以便编译时链接TestDll资源。

### 4. 编译和测试

现在您可以编译和运行EXE项目。点击 "Add" 按钮将调用封装在EXE内部的DLL函数。

封装DLL到EXE是一个非常有用的技巧,可以简化应用程序的部署和维护。此外,将库融合在程序文件中还可为防止DLL劫持提供一定保障,从而提升程序安全性。


相关知识:
bat制作exe教程
在本教程中,我们将介绍如何将批处理(.bat)文件转换为可执行(.exe)文件。这种转换可以有效的隐藏代码,避免被修改,以及使程序看起来更加专业。为了实现.bat到.exe的转换,我们将使用一个名为Bat_To_Exe_Converter的工具。**注意*
2023-06-29
access生成exe方法
在本文中,我们将详细介绍如何将Microsoft Access数据库应用程序(.accdb文件)转换为可执行文件(.exe)。这将使您无需在用户计算机上安装Microsoft Access的情况下,将您的数据库应用程序分发给其他用户。这种方法主要包括使用M
2023-06-29
airtest 打包exe
Airtest是一个用于游戏和应用程序的自动化测试框架。它支持多种平台,包括Windows、Android和iOS。Airtest的主要特点是支持图像识别技术和轻量级脚本语言,这使得它非常适合用来编写跨平台的自动化测试用例。这篇文章将向你介绍如何使用Air
2023-06-29
exe打包工具箱
标题:EXE打包工具箱:原理和详细介绍摘要:本文将向您介绍exe打包工具箱的基本原理、常见打包工具和使用方法。无论您是个人开发者还是团队成员,这些内容都将助您简化开发流程,实现便携式应用程序。一、EXE打包工具箱基本原理EXE打包工具箱(Executabl
2023-04-27
c代码文件生成exe的过程
在本教程中,我们将详细讲述如何将C语言源代码文件(.c 文件)转换为可执行文件(.exe 文件)。这个过程涉及到编译和链接两个阶段。以下是详细步骤说明。1. 准备源代码首先,我们需要一个 C 语言源代码文件,例如 "hello_world.c"。以下是一个
2023-04-27
cpp生成一个exe文件后
在这篇文章中,我们将详细介绍如何将C++代码生成为一个可执行文件(EXE)。我们将简要了解C++编程语言,编译器及链接器如何一步步将代码转换为一个可执行程序。1. 编写C++代码首先,我们需要编写一个简单的C++程序。例如,创建一个名为“main.cpp”
2023-04-27
网页封装exe工具
网页封装exe工具是一种将网页内容封装成可执行文件的工具,也称为网页转exe工具。其原理是将网页的HTML、CSS、JavaScript等资源文件打包成一个可执行文件,用户可以直接运行该文件,无需再通过浏览器访问网页。网页封装exe工具可以用于将网页制作成
2023-04-14
柜体打包软件
柜体打包软件是一种专门用于制作柜体包装图的软件,主要应用于家具、建材等行业。柜体打包软件的原理是通过输入柜体的尺寸、材料、零件数量等基本信息,自动生成柜体的三维包装图,以及相关的包装材料清单和工作指示书,方便生产和包装人员按照图纸进行操作。柜体打包软件的详
2023-04-14
安装yumrpm包
Yumrpm包是一种软件包管理工具,它可以帮助用户在Linux系统中安装、升级、卸载软件包。Yumrpm包的工作原理是通过网络连接到软件源,然后下载软件包并安装到本地系统中。在本文中,我们将详细介绍如何安装yumrpm包以及其工作原理。1. 安装yumrp
2023-04-14
域软件打包
软件打包是将一个或多个软件程序及其相关文件压缩成一个单一的可执行文件,以便于在其他计算机上安装、运行和卸载。软件打包的目的是为了方便用户安装软件,减少用户的安装难度和错误,提高软件的可移植性和易用性。本文将介绍软件打包的原理和详细步骤。一、软件打包的原理软
2023-04-14
h5开发exe框架
H5开发exe框架指的是一种将HTML5应用转化为桌面应用的开发框架。使用该框架可以让开发者将自己的H5应用快速打包成桌面应用,方便用户在本地运行。本文将详细介绍H5开发exe框架的原理和实现方式。H5开发exe框架的原理H5开发exe框架的原理是将一个H
2023-04-14
【模块】窗口样式功能模块教程汇总
窗口样式功能模块教程汇总传送门:https://exe.yimenapp.com/info/list-122.html网站打包exe软件全屏显示和满屏显示有什么区别窗口样式设置exe软件满屏显示不遮挡windows底部导航窗口样式设置exe软件默认全屏显示
2022-02-16
©2015-2021 成都七扇门科技有限公司 yimenapp.com  川公网安备 51019002001185号 蜀ICP备17005078号-4