第一种方法:

具体步骤:

1、生成新的或着打开已经存在的工程文件(DPR)(Project1.dpr)。

2、选择【View】—>【Project Manager】,选中【ProjectGroup】,然后点击【New】按纽新建一个DLL文件;

3、保存DLL文件,修改DLL文件的名称(ExeToDLLProject)与工程组的名称(ExeToDLLProjectGroup),保存成功后,会生成了一个DLL工程文件(ExeToDLLProject.dpr)和一个工程组文件(ExeToDLLProjectGroup.bpg),这个工程组由DLL和EXE组成(在【View】->【Project Manager】中看到, 选择【View】—>【Project Manager】,选中EXE工程或DLL工程,然后点击【Active】,可以切换当前工作的工程);

4、点击工具栏上【Add File To Project】,或者使用快捷键【Shift + F11】,把EXE工程文件中的所有的.pas文件加入到DLL工程中,(如:Unit1.pas)

5、当EXE工程设为当前活动的工程,然后在工程文件中,添加代码:

5、把DLL工程设为当前活动的工程,然后【Project】->【View Source】,打开DLL工程的源代码,在里面添加代码:

library ExeToDLLProject;

uses

SysUtils,

Classes,

Forms,

Controls,

Unit1 in 'Unit1.pas' {Form1},

{$R *.res}

function ShowForm:TModalResult; stdcall;

var

Form1: TForm1;

begin

Form1 := TForm1.Create(nil);

Form1.ShowModal;

FreeAndNil(Form1);

Result := MrNo;

end;

exports

ShowForm; //定义出口函数

begin

end.

第二种方法:

1、打开项目文件(.DPR),删除单元底部begin和end.之间的所有语句(一般情况下这些语句是由Delphi自动生成的)。如果项目中没有用到Form,则从uses子句中删除表单单元(Form);

2、可以在单元底部的begin语句之前加入自己定义的其他函数或者过程,用于输出。添加主窗体的输出函数:

function ShowForm:TModalResult; stdcall;

var

Form1: TForm1;

begin

Form1 := TForm1.Create(nil);

Form1.ShowModal;

FreeAndNil(Form1);

Result := MrNo;

end; 

3、在单元底部的begin语句之前加入一个exports小节,然后写出所有想要输出的函数或过程的名字(最好指定索引号)。如 exports ShowForm; //定义出口函数

4、将项目文件顶部的保留字program改为library。

5、完成,可以编译了。   
  

现在就可以在其他程序中调用本项目中的函数和过程了,只要执行ShowForm就可以执行这个项目,和执行原来的可执行文件一模一样。

delphi 程 序从exe运行改成dll库的更多相关文章

  1. Qt动态库静态库的创建、使用、多级库依赖、动态库改成静态库等详细说明

    本文描述的是windows系统下,通过qtcreator在pro文件中添加动态库与静态库的方法: 1.添加动态库(直接添加动态库文件.dll,非子项目) 通过qtcreator创建动态库的方法就不在此 ...

  2. 将halcon导出的c++程序打包成dll库

     1.从“文件”菜单中,选择“新建”,然后选择“项目…”. 2.从“项目类型”窗格中选择“Visual C++”下的“Win32”. 3.从“模板”窗格中,选择“Win32 控制台应用程序”. 4.为 ...

  3. tomcat 对 vue的history默认支持 tomcat 开启步骤 1.build文件放入webapps目录 2.进入conf目录修改server.xml端口号改成8088 3.进入bin目录运行startup.bat 4.浏览器 localhost:8088/workName 访问即可

    tomcat 对 vue的history默认支持 tomcat 开启步骤 1.build文件放入webapps目录 2.进入conf目录修改server.xml端口号改成8088 3.进入bin目录运 ...

  4. 如何用DELPHI编程修改外部EXE文件的版本信

    右击里面有修改 点开直接修改就可以了吧. DELPHI 里程序的版本信息怎么是灰色的,无法更改 耐心读以下说明,应该能解决你的问题,如果不能解决,请Hi我~ 如何给自己的dll文件添加版本信息呢? 首 ...

  5. Delphi中如何将 Exe 程序或其他资料打包在内,使用时再释放使用(转)

    1.生成一个rc文件,文件格式如下: rname exefile "test.exe" //rname是资源名称 //exefile是资源类型 //text.exe是资源 资源类型 ...

  6. ASP.NET 使用mode=”InProc”方式保存Session老是丢失,无奈改成StateServer 模式。

    http://blog.csdn.net/fox123871/article/details/8165431 session是工作在你的应用程序进程中的.asp.net进程.iis往往会在20分钟之后 ...

  7. VS2010中如何将动态链接库改成静态链接库

    VS2010中如何将动态链接库改成静态链接库 VS2010静态编译生成的.exe可执行文件,可以免安装免DLL在其他电脑直接运行. 静态编译:就是在编译可执行文件的时候,将可执行文件需要调用的对应动态 ...

  8. 关于.Net中Process的使用方法和各种用途汇总(二):用Process启动cmd.exe完成将cs编译成dll

    上一章博客我为大家介绍了Process类的所有基本使用方法,这一章博客我来为大家做一个小扩展,来熟悉一下Process类的实际使用,废话不多说我们开始演示. 先看看我们的软件要设计成的布局吧. 首先我 ...

  9. python学习——将while循环改成函数

    笨办法学python第33节 这一节主要学习内容是while循环,记录内容为将while改成函数,首先源代码如下: i = 0 numbers = [] while i < 6: print & ...

随机推荐

  1. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem F (Codeforces 831F) - 数论 - 暴力

    题目传送门 传送门I 传送门II 传送门III 题目大意 求一个满足$d\sum_{i = 1}^{n} \left \lceil \frac{a_i}{d} \right \rceil - \sum ...

  2. 在Linux系统上卸载playOnLinux

    1.remove just the playonlinux package itself. sudo apt-get remove playonlinux 2.remove the playonlin ...

  3. topcoder srm 340 div1

    problem1 link $f[i][L][R]$表示计算到第$i$个,最小最大值是$L,R$时的最少个数. import java.util.*; import java.math.*; impo ...

  4. FireMonkey 源码学习(4)

    (4)DoDrawLayout DoDrawLayout函数的源代码分析如下: procedure TTextLayoutNG.DoDrawLayout(const ACanvas: TCanvas) ...

  5. Bootstrap3基础 disabled 多选框 鼠标放在方框与文字上都出现禁止 标识

      内容 参数   OS   Windows 10 x64   browser   Firefox 65.0.2   framework     Bootstrap 3.3.7   editor    ...

  6. Python3基础 list + *运算 扩充列表

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  7. 再谈 linux 的sed用法

    很多东西, 如果太复杂, 太庞杂, 一开始, 可以只掌握最简单的. 如果连最简单的都不能掌握, 那看那么多有什么用? 关于cut, sed的 处理过程和思想? vm: virtual machine, ...

  8. 【字符串区别】SQLServer中char、varchar、nchar、nvarchar的区别:

    一.定义 char:    固定长度,存储ANSI字符,不足的补英文半角空格. nchar:   固定长度,存储Unicode字符,不足的补英文半角空格 varchar:  可变长度,存储ANSI字符 ...

  9. [POJ 3984] 迷宫问题(BFS最短路径的记录和打印问题)

    题目链接:http://poj.org/problem?id=3984 宽度优先搜索最短路径的记录和打印问题 #include<iostream> #include<queue> ...

  10. pyqt笔记2 布局管理

    https://zhuanlan.zhihu.com/p/28559136 绝对布局 相关方法setGeometry().move() 箱式布局 QHBoxLayout和QVBoxLayout是基本的 ...