我是Delphi新手,现请教一个调用DLL的问题.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我是Delphi新手,现请教一个调用DLL的问题.相关的知识,希望对你有一定的参考价值。
我是Delphi新手,现有一急手问题,望各位大虾帮忙.
需要用Delphi调用动态库Encoder.dll里的一个转换函数,函数是:
void __stdcall Encode(unsigned char *src,int len,unsigned char *dest);
参数说明:
src: 需转换的字符串指针,
len:需要转换的字符串的长度,
dest:返回通过转换后的字符串指针
请问各位大虾,如何实现调用并获得返回值,请详解,谢谢.
还是不行,我把代码贴出来,大家帮我看看吧.
unit MainFrm;
interface
uses
type
private
public
end;
var
MainForm: TMainForm;
procedure Encode(src:pchar;len:integer;dest:pchar); external 'Encoder.dll';
implementation
$R *.DFM
procedure TMainForm.Button1Click(Sender: TObject);
var sms_message:pchar;
begin
Encode('中华人民共和国', 14,sms_message);
showmessage(sms_message);
end;
执行会报错"Access violation at address … in module ‘Encoder.dll’,…."
yeye55,用了你的方法,还是同样的报错.
方便的话我把DLL发出来,大家帮我看下.
即在interface
type 下
TEnCode = function(src:Pchar;len :integer;dest:Pchar);stdcall;
在
var
Encode:TEncode;
在实现体里使用就可以了
装载插件
调用接口
LoadLibrary
GetProcAddress 参考技术A 在接口部分写上:
function void __stdcall Encode(unsigned char *src,int len,unsigned char *dest);stdcall;
external 'Encoder.dll';
然后直接在执行部分调用这个函数。 参考技术B procedure TMainForm.Button1Click(Sender: TObject);
var sms_message:pchar;
begin
GetMem(sms_message,100);
FillChar(sms_message^,100,0);
Encode('中华人民共和国', 14,sms_message);
showmessage(sms_message);
FreeMem(sms_message);
end; 参考技术C procedure Encode(src:PChar; len: Integer; dest: PChar);stdcall; external 'Encoder.dll'
以上是关于我是Delphi新手,现请教一个调用DLL的问题.的主要内容,如果未能解决你的问题,请参考以下文章
尝试从 VS2013 C# 程序调用 DELPHI XE2 DLL 时出错