delphi 程 序从exe运行改成dll库
第一种方法:
具体步骤:
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库的更多相关文章
- Qt动态库静态库的创建、使用、多级库依赖、动态库改成静态库等详细说明
本文描述的是windows系统下,通过qtcreator在pro文件中添加动态库与静态库的方法: 1.添加动态库(直接添加动态库文件.dll,非子项目) 通过qtcreator创建动态库的方法就不在此 ...
- 将halcon导出的c++程序打包成dll库
1.从“文件”菜单中,选择“新建”,然后选择“项目…”. 2.从“项目类型”窗格中选择“Visual C++”下的“Win32”. 3.从“模板”窗格中,选择“Win32 控制台应用程序”. 4.为 ...
- 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目录运 ...
- 如何用DELPHI编程修改外部EXE文件的版本信
右击里面有修改 点开直接修改就可以了吧. DELPHI 里程序的版本信息怎么是灰色的,无法更改 耐心读以下说明,应该能解决你的问题,如果不能解决,请Hi我~ 如何给自己的dll文件添加版本信息呢? 首 ...
- Delphi中如何将 Exe 程序或其他资料打包在内,使用时再释放使用(转)
1.生成一个rc文件,文件格式如下: rname exefile "test.exe" //rname是资源名称 //exefile是资源类型 //text.exe是资源 资源类型 ...
- ASP.NET 使用mode=”InProc”方式保存Session老是丢失,无奈改成StateServer 模式。
http://blog.csdn.net/fox123871/article/details/8165431 session是工作在你的应用程序进程中的.asp.net进程.iis往往会在20分钟之后 ...
- VS2010中如何将动态链接库改成静态链接库
VS2010中如何将动态链接库改成静态链接库 VS2010静态编译生成的.exe可执行文件,可以免安装免DLL在其他电脑直接运行. 静态编译:就是在编译可执行文件的时候,将可执行文件需要调用的对应动态 ...
- 关于.Net中Process的使用方法和各种用途汇总(二):用Process启动cmd.exe完成将cs编译成dll
上一章博客我为大家介绍了Process类的所有基本使用方法,这一章博客我来为大家做一个小扩展,来熟悉一下Process类的实际使用,废话不多说我们开始演示. 先看看我们的软件要设计成的布局吧. 首先我 ...
- python学习——将while循环改成函数
笨办法学python第33节 这一节主要学习内容是while循环,记录内容为将while改成函数,首先源代码如下: i = 0 numbers = [] while i < 6: print & ...
随机推荐
- 计算多数的乘积(Python实现)
1 # -*- coding: utf-8 -*- # sum_of_products.py # @author 0yst3r # @description 两数之积及多数之积 # @created ...
- Vijos 1404 遭遇战 - 动态规划 - 线段树 - 最短路 - 堆
背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...
- ODAC(V9.5.15) 学习笔记(十四)TCRBatchMove
名称 类型 说明 AbortOnKeyViol Boolean 在处理数据时,如果发生主键冲突或主键校验失败时,是否中断 AbortOnProblem Boolean 发生问题时是否中断 Change ...
- Restful framework【第九篇】分页器
基本使用 分页 -简单分页 page_size = api_settings.PAGE_SIZE :每页显示条数 page_query_param = 'page' :查询的页码数 page_size ...
- TI 多模雷达1843毫米波雷达做自动泊车(用了8个雷达)
http://e2e.ti.com/blogs_/b/behind_the_wheel/archive/2019/01/09/how-mmwave-sensors-enable-autonomous- ...
- P4609 [FJOI2016]建筑师
思路 裸的第一类斯特林数,思路和CF960G相同 预处理组合数和第一类斯特林数回答即可 代码 #include <cstdio> #include <cstring> #inc ...
- Linux 时间矫正命令
Linux 时间矫正 sudo ntpdate -u ntp.api.bz 第一使用可能提示ntpdate没安装,用以下命令安装即可 sudo apt install ntpdate
- CCF计算机网络会议日期
SenSys: November 5-8 2017, Deadline: April 3, 2017 CoNEXT: December 12-15 2017, Deadline: June 12, 2 ...
- js运算符的一些特殊应用
作者: 小文 来源: http://www.cnblogs.com/daysme/ 时间: 2017/3/2 17:21:03 本文集合了了js运算符的一些特殊应用. js位运行符的运用. js运算符 ...
- python反爬虫解决方法——模拟浏览器上网
之前第一次练习爬虫的时候看网上的代码有些会设置headers,然后后面的东西我又看不懂,今天终于知道了原来这东西是用来模拟浏览器上网用的,因为有些网站会设置反爬虫机制,所以如果要获取内容的话,需要使用 ...