//首先宣告這個dll中的函式,然後就可以直接呼叫了
function addnum(num1,num2:integer):integer;stdcall;external 'project1.dll' name 'addnumber';
//function addnum(num1,num2:integer):integer;stdcall;external 'add_dll_test.dll' name 'addnumber';
procedure tform1.button1click(sender: tobject);
varnum1,num2:integer;
sum:integer;
begin
num1:=strtoint(edit1.text);
num2:=strtoint(edit2.text);
sum:=addnum(num1,num2);
edit3.text:=inttostr(sum);
end;
procedure tform1.button2click(sender: tobject);
type
//這裡的taddfunc即是project1.dll中的addnumber方法
taddfunc=function (x,y:integer):integer;stdcall;
varonehandle:thandle;
addfunc:taddfunc;
num1,num2:integer;
sum:variant;
begin
num1:=strtoint(edit1.text);
num2:=strtoint(edit2.text);
onehandle:=loadlibrary('project1.dll'); //動態載入dll,並返回其控制代碼
tryif onehandle <> 0 then
addfunc:=getprocaddress(onehandle,'addnumber'); //獲取內部函式的位址
if (@addfunc <> nil) then
begin
sum:=addfunc(num1,num2); //實際的**函式
edit3.text:=inttostr(sum);
endelse
raiselastwin32error; //異常處理
finally
freelibrary(onehandle); //呼叫完畢**dll占用的資源
end;
end;
1.檢視函式名:
在dll檔案的資料夾下,用「shift+滑鼠右鍵」選擇「在此處開啟命令視窗」,輸入「tdump ***.dll」,檢視內部的函式名
2.使用函式位置(不推薦)
addfunc:=getprocaddress(onehandle,makeintresource(1));
C 呼叫delphi編寫的dll
技術實現 如何逐步實現動態庫的載入,型別的匹配,動態鏈結庫函式匯出的定義,參考下面巨集定義即可 define libexport api extern c declspec dllexport 第一步,我先從簡單的呼叫出發,定義了乙個簡單的函式,該函式僅僅實現乙個整數加法求和 libexport a...
使用Delphi呼叫C 編寫的DLL
1 c 編寫的dll 如下 該dll的功能比較簡單,就是實現乙個整數加法 iaddbase 是乙個抽象類,iadd實現了iaddbase的方法,並採用了單例模式 getaddinstance 為dll對外的介面,返回乙個iadd的物件指標 呼叫者使用該例項就可以呼叫add方法 class iaddb...
Delphi動態呼叫C 寫的DLL
c dll 檔案,建議用最簡單的c 編輯工具。不會加入很多無關的dll檔案。本人用codeblocks mingw。不像 vs2010,dll編譯成功,呼叫的時候會提示缺其他dll。系統生成的main.h和main.cpp ifndef main h define main h include to...