各位犇人(不是一般的牛人),请回答一个dll的简单问题 (100分)

  • 主题发起人 主题发起人 bijiben
  • 开始时间 开始时间
B

bijiben

Unregistered / Unconfirmed
GUEST, unregistred user!
[:)]C++ builder 写的动态库函数声明为
char DllExport GetRecordNum (char * szCommName,unsigned char ucPosNo,
char ucFileType,char cType,unsigned char *pucRecnoBuf );
我在delphi 中怎么声明呢?我主要是对参数的对应不太清楚,尤其请给一个调用的简单实例,感激不尽。
我是这样的,不知道对不对:
function GetRecordNum ( szCommName:PChar
ucPosNo:Byte
ucFileType:char;
cType:char
pucRecnoBuf:array of Byte ):char
stdcall;external 'IC_DLL.dll'

我在这里先给您拜年了
 
请参考下面两例
function GetVerbEnable;external 'IC_DLL.dll' name 'GetVerbEnable'
function GetCorpInfo;external 'IC_DLL.dll' name 'GetCorpInfo';
 
我知道,主要是对应的参数怎么对应呢?比如unsigned char *pucRecnoBuf
 
不知道这个对你是不是有用,是先人的结晶哦


我想用一个窗体作为一个dll,
主程序中调用怎么调用这个dll窗体呢?
谁能给一个简单的例子么?
谢谢!!


来自:YunEr, 时间:2001-4-25 22:48:00, ID:515893
library About;
uses
SysUtils,
Classes,
CreatAboutUnit in 'unit1.pas';

exports
CreatAbout Index 1 name 'CreatAbout',
==================================
Unit unit1;

Interface

Uses
Windows, Messages, SysUtils, Classes, Graphics, Forms;

Type
TFormAbout = Class(TForm)
Private
{ Private declarations }
Public
{ Public declarations }
End;

Function CreatAbout (FormHandle : THandle;) : Boolean
stdcall;

Var
FormAbout : TFormAbout;

Implementation

{$R *.DFM}

Function CreatAbout(FormHandle : THandle;) : Boolean;
Begin
.......
End;

End.

=====================================================
主程序

function CreatAbout(FormHandle : THandle;):THandle;stdcall;
external 'About.dll' name 'CreatAbout';
^^^^^^^^^^假设是这个DLL名字
...........

procedure TForm1.button1Click(Sender: TObject);
begin
CreatAbout(Form1.handle);
end;




来自:吴剑明, 时间:2001-5-9 16:21:00, ID:525811
在DLL里包含一个方法,在这个方法里CREATE一个FORM,然后SHOW出来就可以了。:)
很简单的


来自:iie, 时间:2001-5-9 16:34:00, ID:525824
应该是在DLL中输出函数吧,
方法怎么输出?我还没学过,呵呵。



来自:Tintin, 时间:2001-5-10 13:05:00, ID:526506
使用 export 关键字



来自:watter, 时间:2001-10-15 10:53:00, ID:673374
unit UnitGetDate;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ComCtrls, ExtCtrls;

type
TfrmGetDate = class(TForm)
Bevel1: TBevel;
MonthCalendar1: TMonthCalendar;
bbtnOK: TBitBtn;
bbtnCancel: TBitBtn;
procedure MonthCalendar1DblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmGetDate: TfrmGetDate;
Function GetDate:TDate;export;
implementation

{$R *.DFM}
Function GetDate:TDate;
begin
frmGetDate:=TfrmGetDate.Create(Application);
try
if frmGetDate.ShowModal=IDOK then
Result:=frmGetDate.MonthCalendar1.Date
else frmGetDate.Close;
Finally
frmGetDate.Free;
end;
end;

procedure TfrmGetDate.MonthCalendar1DblClick(Sender: TObject);
begin
GetDate;
end;

end.

使用DLL文件中封装的窗口
http://www.csdn.net/develop/article/10/10919.shtm
 
感谢 archonwang
不过麻烦老兄再看看我的问题
 
声明如下:
function GetRecordNum(szCommName: PChar
unPosNo: Byte;
ucFileType, cType: Char
pucRecnoBuf: PChar): Char
stdcall;
对于 PChar 类型的参数可传递一个字符数组给它,如:
var
StrArray: array[0..128] of Char;
GetRecordNum(@StrArray, ……);
 
牛头12236,你的好像很有点对哦,我说你就是一个犇人嘛,哈哈,
我先看看,如果对的话就要送分了,继续补充点可以吗?
 
可惜我只是牛人而已:)
 
to bijiben:
看你写的程序,你应该是写IC卡程序的高手吧,我是刚入门写CPU卡程序的,想请教一些问题可以吗?

我的QQ:26320340
 
拜托,你只提供了一个函数声明给我……
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
907
import
I
后退
顶部