如何调用Delphi写的dll
我用Delphi写了一个dll,想在BCB中调用,可是在调用是根本没有结果,不起作用.
var
SaveName: PAnsiChar;
function GetFileName(filename: PAnsiChar): String; stdcall;
function GetFileName(filename: PAnsiChar): String; stdcall;
begin
filename := SaveName;
Result := ExtractFileName(filename);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if SaveImageEnDialog1.Execute then begin
SaveName := PAnsiChar(SaveImageEnDialog1.FileName);
ImageEnIO1.SaveToFile(SaveImageEnDialog1.FileName);
end;
end;
//调用程序为
HINSTANCE Dll = LoadLibrary("Scan.dll");
String filename;
if (Dll)
{
//LoadFunction = (String(__stdcall*)())GetProcAddress(Dll, "GetFileName");
GetFileName = (String(__stdcall*)(String))GetProcAddress(Dll, "GetFileName");
if (GetFileName) {
DBEdit3->Text = GetFileName(filename);
ShowMessage(GetFileName(filename));
}
else
ShowMessage(SysErrorMessage(GetLastError()));
FreeLibrary(Dll);
}
else
{
ShowMessage(SysErrorMessage(GetLastError()));
ShowMessage("Unable to load the Dll");
}
我在
Delphi7入门与精通一书中看到,有的dll只能在delphi中调用,这是什么意思呢?
请大家帮助看一看,为什么调用的时候在Delphi中有结果,而在BCB中调用却没有结果呢?