回 帖 发 新 帖 刷新版面

主题:请问如何在delphi中调用VC的DLL(动态链接库)

我有一个项目,目前使用DELPHI开发数据库界面,但是使用VC写的底层算法,
请问各位大侠,如何使用DELPHI调用VC的DLL。

代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
  Number1,Number2:integer;
  Sum:integer;
  OneHandle:THandle; //定义一个句柄变量
  PFunc: TFarProc;
begin
  OneHandle := LoadLibrary('test.dll'); //动态载入DLL,并返回其句柄
  Pfunc := GetProcAddress(Moudle,'Instr');
end;

调试时OneHandle有值,但是Pfunc始终=nil,请问怎样才能解决????

回复列表 (共3个回复)

沙发


var
  Number1,Number2:integer;
  Sum:integer;
  OneHandle:THandle; //定义一个句柄变量
  PFunc: TFarProc;
begin
  OneHandle := LoadLibrary('test.dll'); //动态载入DLL,并返回其句柄
  Pfunc := GetProcAddress(Onehandle,'Instr');
 if not(@PFunc=nil) then
 showmessage('调用成功')
 else
 showmessage('调用失败')
end;

板凳

一楼的代码我试过了,返回值还是nil,我看《DELPH5开发人员指南》(第9章)上介绍说,需要将VC所生成的DLL转换一下,但是转换示例在他的随机光盘里,我把它的光盘弄丢了,有哪位大侠能告诉我怎么转换么???谢谢谢谢。

3 楼

var
  Number1,Number2:integer;
  Sum:integer;
  OneHandle:THandle; //定义一个句柄变量
  PFunc: TFarProc;
begin
  OneHandle := LoadLibrary('test.dll'); //动态载入DLL,并返回其句柄
 if OneHandle<>0 then
 begin
  @Pfunc := GetProcAddress(Onehandle,'Instr');
 if (@PFunc<>nil) then
 showmessage('调用成功')
 else
 showmessage('调用失败')
 end;
end;

试试看吧

我来回复

您尚未登录,请登录后再回复。点此登录或注册