dll接口怎么写

1.dll 导出接口注意C++的多态,接口只能是指针
IMyInterface* getInterface(); 这样才行
我写过一个接口封装类,发到你邮箱了 。虽然不是什么核心代码,但是也用在项目里了,代码不要公开 。
哦 对了,仔细看了一下你的代码 。突然发现你说GetProcessAdress取不到句柄 。
那你是否在.DEF里面添加导出函数了呢?
就像这样
; ??.def : Declares the module parameters for the DLL.
LIBRARY "??"
DESCRIPTION ??Windows Dynamic Link Library'
EXPORTS
getInterface; Explicit exports can go here
2.Delphi编程 DLL编写接口怎么声明 在线等//动态调用方式、先定义函数、后面在通过Button过程调入个函数接口地址
_GetPassWord:function (Pass:string):string;stdcall;
_CheckPassWord:Function(SourcePass:string;EncryPass:string):boolean;stdcall;
_StrEncrypt:Function(s: string; key: word): string;StdCall;
_StrDecrypt:Function(s: string; key: word): string;StdCall;
_GetRegistCode:Function(Pass:string):String;StdCall;
_CheckRegistCode:Function(CompanyName,RegistCode:string):Boolean;StdCall;
//下面为静态调用方式
function GetPassWord(Pass:string):ShortString;stdcall;external 'MyHRDLL.dll';
function CheckPassWord(SourcePass,EncryPass:string):Boolean;stdcall;external 'MyHRDLL.dll';
function StrEncrypt(s: string; key: word): ShortString;stdcall;external 'MyHRDLL.dll';
function StrDecrypt(s: string; key: word): ShortString;stdcall;external 'MyHRDLL.dll';
function GetRegistCode(Pass:string):ShortString;stdcall;external 'MyHRDLL.dll';
function CheckRegistCode(CompanyName,RegistCode:string):Boolean;stdcall;external 'MyHRDLL.dll';
动态调用的button实现:
procedure TForm1.Button5Click(Sender: TObject);
begin
try
_DLLMoudle := Loadlibrary('MyHRDLL.dll');
ShowMessage('初始化成功!!!');
except
ShowMessage('初始化失败!!!');
Exit;
end;
if _DLLMoudle > 32 then begin
Try
@_GetPassWord:=GetProcAddress(_DLLMoudle,'GetPassWord'); //打开串口
@_CheckPassWord:=GetProcAddress(_DLLMoudle,'CheckPassWord'); //关闭串口
@_StrEncrypt:=GetProcAddress(_DLLMoudle,'StrEncrypt'); //对卡号冲值
@_StrDecrypt:=GetProcAddress(_DLLMoudle,'StrDecrypt'); //删除卡号
@_GetRegistCode:=GetProcAddress(_DLLMoudle,'GetRegistCode'); //终端机清除刷卡记录
@_CheckRegistCode:=GetProcAddress(_DLLMoudle,'CheckRegistCode'); //
ShowMessage('DLL装载成功 。。。。.');
Except
ShowMessage('出错!!DLL打开失败!!不能做其他操作!!');
End
end;
end;
3.DELPHI 写 标准接口DLLDelphi写标准DLL接口,函数生命必须是 stdcall,否则在VB中将无法调用 。
function OPENHE(b: Integer): integer; stdcall;
var
i: Integer;
begin
Result := b + i;
end;
VB 函数声明和调用
Public Declare Sub OPENHE Lib "Project1" (ByVal b As Long) as Long
4.Vb 6.0调用通信达交易接口.dll怎么写代码要声明一个DLL过程,首先需要在代码窗口的"通用(General)"部分增加一个Declare语句 。如果该过程返回一个值,应将其声明为
Function:
Declare Function publicname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type] [,[ByVal] variable [As type]] 。])] As Type
如果过程没有返回值,可将其声明为Sub:
Declare Sub publicname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type] [,[ByVal] variable [As type]] 。])]
缺省情况下,在标准模块中声明的DLL过程,可以在应用程序的任何地方调用它 。在其它类型的模块中定义的DLL过程则是模块私有的,必须在它们前面声明Private关键字,以示区分 。下面分别介绍声明语句的各个组成部分 。