DELPHI 写 标准接口DLL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DELPHI 写 标准接口DLL相关的知识,希望对你有一定的参考价值。

library Project1;
Important note about DLL …. …. …. …. …. …. …. …. …. 省略
uses
SysUtils,
Classes;
$R *.res
begin
end.
//上面这段是我点新建工程DLL DELPHI默认出现的
procedure OPENHE(b: Integer);
VAR
I: INTEGER
begin
i:=1
OPENHE:= PCHAR(b+i)
end.
//这段我知道有问题,我是学VB的,接触DELPHI不到一天......语法什么都不清楚..
我想写个标准接口的DLL
函数返回值OPENHE = 参数b + 变量 i
需要怎么改呢?

参考技术A Delphi写标准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追问

还是有点错误呢.....不清楚什么情况,如果可以的话 能否留个QQ请教一下呢?

追答

什么错误,如果出现错误应该与上面的代码无关,而是你其缺少其他东西,比如没有声明 exports。
在Delphi代码最后应该有:
unit test1;

implementation

function OPENHE(b: Integer): integer; stdcall;
var
i: Integer;
begin
Result := b + i;
end;

exports
OPENHE;
end.

本回答被提问者采纳
参考技术B function OPENHE(b: Integer):pchar;
VAR
I: INTEGER
begin
i:=1
result := PCHAR(inttostr(b+i)); //
end.
参考技术C procedure OPENHE(b: Integer);stdcall
VAR
I: INTEGER
begin
i:=1
OPENHE:= PCHAR(b+i)
end.

exports
OPENHE;
参考技术D 2楼已答。

delphi 调用 c语言 dll

我用C语言写了一个Dll,编译成功。
是一个非常简单的加密算法,代码如下:
#include<stdio.h>
__declspec(dllexport) void Encipher(char a[16])

int i,len;
int s=1;
len=strlen(a);
for(i=0;i<len;i++)

a[i]=a[i]+s;
s=s+2;



现在我在Delphi中如何调用它并实现这样的功能,点击Button1,获取edit1.text的内容,存于数组中,然后调用Dll中的函数,进行简单加密,然后将结果赋给edit2.text。

很疑问你这个函数能传新的字符数组??
型参了吧。
不管怎么说,照着你的要求做了 delphi程序。

type
TArrChar = array[0..15] of char;
procedure Encipher(a:TArrChar);cdecl;external 'xxx.dll';

implementation

$R *.dfm

procedure TForm1.Button1Click(Sender: TObject);
var
a:TArrChar;
begin
CopyMemory(@a,@Edit1.text[1],16);
Encipher(a);
Edit2.Text:=a;
end;
参考技术A 用delphi写dll啊,那样调用方便些。看不懂C语言的代码

以上是关于DELPHI 写 标准接口DLL的主要内容,如果未能解决你的问题,请参考以下文章

delphi7制作带窗体的DLL

请帮忙解答一下,在delphi下编写dll文件遇到的错误

Delphi采用接口实现DLL调用

Delphi 的 64 位 DLL c/c++ 接口

关于delphi调用C++的DLL中char*参数的问题

Delphi 调用DLL TStream作为参数