1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > delphi 调用c语言dll Delphi 动态调用C的DLL 报错。

delphi 调用c语言dll Delphi 动态调用C的DLL 报错。

时间:2019-05-19 08:20:13

相关推荐

delphi 调用c语言dll Delphi 动态调用C的DLL 报错。

该楼层疑似违规已被系统折叠隐藏此楼查看此楼

有偿帮助也行。

// DLL调用的说明文档。

//下面的Delphi的代码,Delphi版本是XE10.2

type

Tlmc1_Initial = function(strEzCadPath: PAnsiChar; bTestMode: Boolean; hOwenWnd: THandle): Integer; cdecl; //定义一个函数类型,注意一点过程类型种的参数应该与DLL中用到的方法的参数一致。

Tlmc1_LoadEzdFile = function(strFileName: PChar): Integer; stdcall;

procedure TForm1.btn_InitialClick(Sender: TObject);

var

st, i: Integer;

Handle: THandle;

P_Initial: PInteger;

Initial: Tlmc1_Initial;

path: string;

begin

path := ExtractFilePath(ParamStr(0));

try

Handle := LoadLibrary(PChar('MarkEzd.dll'));

if Handle > 0 then//加载成功就执行。

Memo1.Lines.Add('激光动态库载入成功!' + ' 句柄值:' + inttostr(Handle))

else

begin

Memo1.Lines.Add('激光动态库载入错误!' + ' 错误代码:' + inttostr(Handle));

Exit

end;

Initial := GetProcAddress(Handle, PAnsiChar('lmc1_Initial')); //取函数的地址。

if Assigned(Initial) then //如果函数存在就调用

begin

st := Initial(PAnsiChar(path), False, Handle);

case st of

0:

Memo1.lines.add('控制卡初始化成功!');

1:

Memo1.lines.add('发现EZCAD已经运行!');

2:

Memo1.lines.add('找不到EZCAD.CFG');

3:

Memo1.lines.add('打开LMC1失败');

4:

Memo1.lines.add('没有有效的lmc1设备');

5:

Memo1.lines.add('lmc1版本错误');

6:

Memo1.lines.add('找不到设备配置文件');

7:

Memo1.lines.add('报警信号');

8:

Memo1.lines.add('用户停止');

9:

Memo1.lines.add('不明错误');

10:

Memo1.lines.add('超时');

11:

Memo1.lines.add('未初始化');

12:

Memo1.lines.add('读文件错误');

13:

Memo1.lines.add('窗口为空');

14:

Memo1.lines.add('找不到指定名称的字体');

15:

Memo1.lines.add('错误的笔号');

16:

Memo1.lines.add('指定名称的对象不是文本对象');

17:

Memo1.lines.add('保存文件失败');

18:

Memo1.lines.add('找不到指定对象');

19:

Memo1.lines.add('当前状态下不能执行此操作');

end;

Memo1.SelStart := Length(Memo1.Text);

Memo1.SelLength := 0;

Memo1.Perform(EM_SCROLLCARET, 0, 0);

end

else

begin

Memo1.Lines.Add('找不到函数!');

raise Exception.Create('GetProcAddress 调用失败,错误代码:' + inttostr(getlasterror));

end;

finally

FreeLibrary(Handle);

end;

end;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。