有关DLL的编程!(100分)

  • 主题发起人 主题发起人 xjhuo
  • 开始时间 开始时间
X

xjhuo

Unregistered / Unconfirmed
GUEST, unregistred user!
Library h_dll;//动态链接库

uses
Dialogs,
hhh in 'hhh.pas' {Form1};
function Hobbit(value:integer):string;export;
begin
case value of
1:result:='Frodo';
2:result:='Samwise';
3:result:='Pippin';
4:result:='Meriadoc';
else
result:='Must be an Orc!';
end;
end;
function Larger(Val1,Val2:integer):integer;export;
begin
if Val1>Val2 then
result:=Val1
else
if Val2>Val1 then
result:=Val2
else
result:=0;
end;
procedure Elephants;Export;
begin
ShowMessage('Pink Elephants on Parade');
end;
exports
Hobbit index 1,
Larger index 2,
Elephants index 3;

begin
end.
unit hhh;//是用来调用DLL的程序
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
GroupBox1: TGroupBox;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
function Hobbit(Value:Integer):string;external'MyDll' index 1;
function Larger(val1,val2:integer):integer;external 'MyDll' index 2;
procedure Elephants;external 'MyDll'index 3;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.add(Hobbit(5));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.Add (IntToStr(Larger(12,25))+'is larger than 12');
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Elephants;
end;

end.
问题还是:在编译时,它仍然要求我指定宿主程序。而我由于不能正常调用DLL,所以无法生成。EXE文件,因而不能形成该宿主程序!
恳请各位相助!
 
已将试成功的程序发给你了,请查收!
 
xjhou 你真有钱哪, 上一个问题还算不算数了?
你的问题根本不是什么dll中使用form的问题, 你是通过form来调用dll函数;
1.将那个form(hhh.pas)从 h_dll project里面拿掉
2.用 project | build h_dll.dll
3.新建一个 project 并用 hhh.pas 代替缺省得 unit1.pas
3.编译并运行新建的 exe, 要想调试 dll 可以用此 exe 作为宿主程序.
 
我这里有个关于DLL的比较详细的文章,由于太多
为了不影响网络的熟读邮寄给你了!
 
贴在你的另一个有关DLL的问题里面了 :)
 
littlegrass说把成功的程序发过去了,
想必是没问题,说不定因此才导致这位老兄
不来了 :)
分数的分配自然也要有区别 ^_^
 
唐大虾:
您好!我也想要关于DLL的比较详细的文章,我出差近二个月了,希望能满足我小小要求。谢谢。
zip to me by e-mail.
cgf98@163.net
 
唐大虾:
您好!我是一个新手,想学着编几个DLL,可是买的书上有关内容太少,
所以我也想要关于DLL的比较详细的文章,希望能得到你的帮助。谢谢。
Please mail to me in zip.
hqpeng@263.net
 
后退
顶部