Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 2957|回复: 3

Lazarus创建带窗体的动态库(DLL and SO)的方法

[复制链接]

该用户从未签到

发表于 2012-2-1 15:20:48 | 显示全部楼层 |阅读模式
两种方法,一种为下面的代码部分,另一种在后面的附件中:
程序的代码:
  1. unit MainUnit;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5.   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, dynlibs;
  6. type
  7.   { TForm1 }
  8.   TForm1 = class(TForm)
  9.     Button1: TButton;
  10.     procedure Button1Click(Sender: TObject);
  11.     procedure FormCreate(Sender: TObject);
  12.   private
  13.     { private declarations }
  14.   public
  15.     { public declarations }
  16.   end;
  17. var
  18.   Form1: TForm1;
  19.   UI: TLibHandle;
  20.   ShowDLLForm: procedure; stdCall;
  21. implementation
  22. {$R *.lfm}
  23. { TForm1 }
  24. procedure TForm1.FormCreate(Sender: TObject);
  25. begin
  26.   UI:=LoadLibrary('UI.dll');
  27.   Pointer(ShowDLLForm):=GetProcAddress(UI, 'ShowDLLForm');
  28. end;
  29. procedure TForm1.Button1Click(Sender: TObject);
  30. begin
  31.   ShowDLLForm;
  32. end;
  33. end.
复制代码
DLL的代码:
  1. library Userinterface;
  2. {$mode objfpc}{$H+}
  3. uses
  4.   Classes, Interfaces, UnitDllForm
  5.   { you can add units after this };
  6. {$R *.res}
  7. procedure ShowDLLForm; stdCall;
  8. begin
  9.   Form1.Show;
  10. end;
  11. // Exports
  12. exports
  13.   ShowDLLForm; stdCall:
  14. begin
  15. end.
复制代码
下面是个例子:



或直接用网盘下载:
下载地址

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

x
回复

使用道具 举报

该用户从未签到

发表于 2012-2-1 17:56:44 | 显示全部楼层
代码的方法是可行的。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-2-2 05:27:07 | 显示全部楼层
linux下编译不过。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2013-6-17 16:58:59 | 显示全部楼层
procedure DisplayForm; stdcall; external 'libthedll.so';
紧急求教,此句一加,就不行。在ubantu下
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 21:25 , Processed in 0.029888 second(s), 10 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表