當前位置:編程學習大全網 - 編程語言 - VC調用DLL的例子,用易語言寫的

VC調用DLL的例子,用易語言寫的

今天嘗試用VC++調用易語言DLL。Yi語言有很多很好的高級函數庫,寫DLL的過程很簡單。C++下所有復雜的函數都可以用Yi語言簡單實現,所以我們考慮通過Yi語言把DLL做成VC++的。

易語言的DLL函數都是stdcall約定,不會生成壹個lib文件讓妳調用。

這樣,有兩種方法可以調用我們的easy dll:

動態調用1.vc中的_stdcall。

2.自己做壹個lib文件,然後靜態調用。

這兩種方法各有利弊。如果DLL裏有很多函數,做lib庫要花壹些時間,但是壹勞永逸。

動態調用DLL需要調用API函數LoadLibrary和GetProcAddress。LoadLibrary加載要調用的DLL文件,然後用GetProcAddress獲取DLL中某個函數的指針,再通過函數指針調用。

下面舉例說明如何做壹個易語言DLL,在VC中動態調用。

1.首先做壹個易語言DLL。

打開彜語,在彈出的向導中選擇“windows動態鏈接庫”。

現在我們添加自己的函數。Ctrl+N添加如下函數

版本2

。子例程myadd,雙精度小數類型,打開

參數a,雙精度小數類型

參數b,雙精度小數類型

返回(a+b)

myadd函數用於計算兩個雙精度小數的和(C++的double類型)。

不要忘記這個函數應該是公開的,這樣它才能被導出。

完成後,它被編譯成壹個dll文件,並命名為mydll.dll。

這樣,壹個簡單的易語言DLL就完成了。

2.在VC中調用易語言DLL。

要動態調用DLL,需要使用API函數LoadLibrary和GetProcAddress。查壹下MSDN,妳就會知道使用這兩個函數需要加法。

# include & ltWindows.h & gt

接下來,我們需要在被調用的函數上聲明壹個_stdcall函數類型。

typedef double(CALLBACK * dll _ myadd)(double,double);

(註意:CALLBACK和WINAPI都是__stdcall的別名,在windef.h中定義:

#用定義回調__stdcall //回調函數

#定義WINAPI __stdcall //WINAPI

想用哪個就用哪個,也可以直接寫__stdcall。)

有了函數類型,就可以用它來定義函數指針變量,然後調用函數。

HINSTANCE hDll//dll句柄

dll _ myadd myadd//函數指針變量

hDll = LoadLibrary(" mydll . dll ");//加載dll

myadd =(dll _ myadd)GetProcAddress(hDll,“myadd”);//獲取dll中myadd函數的指針地址。

雙s = myadd(1.2,2.3);//此處調用函數

不要忘記在使用DLL後調用。

免費圖書館(hDll);//釋放DLL句柄

這樣,簡單的調用易語言DLL的例子就完成了。應該指出的是:

在聲明函數類型時,壹定要指定它是壹個stdcall調用,不能省略。因為VC默認的調用方法是cdecl。

如果想省略,可以更改項目屬性,在屬性頁-c++ tab-Advanced-Calling conventi on中選擇使用stdcall。這也可以省略stdcall聲明。

  • 上一篇:CF經常卡死機
  • 下一篇:2013年河南省濮陽縣人民醫院公開招聘專業技術人員簡章
  • copyright 2024編程學習大全網