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 & ...
随机推荐
- 在Ubuntu上更新Chrome到最新的版本
本操作只限于已经安装了Chrome的Ubuntu系统: Step 1: sudo apt-get update Step 2: sudo apt-get install google-chrome-s ...
- dijkstra最短路
感觉自己太懒了,以后每天更博客激励自己吧. //时间复杂度O(n*n)的最短路算法 //首先需要设置一个访问数组v[maxn],一个数组d[maxn], memset(v,,sizeof(v)); ; ...
- ununtu 18.04 163 mirror
deb http://mirrors.163.com/ubuntu/ bionic main restricted deb http://mirrors.163.com/ubuntu/ bionic- ...
- SP6779 GSS7
GSS7解题报告 前言 唔,有点恶心哪,废了两个多小时debug 思路 很容易看出傻子都知道,这个是树链剖分+线段树的裸题,只不过是恶心了点,这里重点讲一下细节问题 线段树 做过GSS系列的都应该很熟 ...
- MetInfo V5.1 GetShell一键化工具
# 漏洞解析: config/config.inc.php $langoks = $db->get_one("SELECT * FROM $met_lang WHERE lang='$ ...
- R语言之正则表达式
常见与正则表达式相关的函数: grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE, fixed = FALSE, use ...
- P3727 曼哈顿计划E
点分治+SG函数还真是令人意外的组合啊 思路 这道题看到找一条满足条件的链,想到点分治 看到博弈,想到SG函数 然后就变成一道SG函数+点分治的题了 然后1e9的SG函数怎么搞?当然是打表了 然后各种 ...
- HDU 6096 String(AC自动机+树状数组)
题意 给定 \(n\) 个单词,\(q\) 个询问,每个询问包含两个串 \(s_1,s_2\),询问有多少个单词以 \(s_1\) 为前缀, \(s_2\) 为后缀,前后缀不能重叠. \(1 \leq ...
- 【ASP.NET】The CodeDom provider type “Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider” could not be located
一般是asp.net的项目在启动的时候会报这个错误. 页面显示成: 我推测的原因是由于project的build的输出属性改了, 非bin目录下, 导致这个问题. 解决这个问题的方案有两个: 1. 改 ...
- 【NOIP 2017】Day2 T3 列队
Problem Description \(Sylvia\) 是一个热爱学习的女孩子. 前段时间,\(Sylvia\) 参加了学校的军训.众所周知,军训的时候需要站方阵. \(Sylvia\) 所在的 ...