本文**:
第一,開啟vc2008 建立乙個名為sayhello的win32 dll的空專案。
第二,選擇dll空專案,選擇「插入|類」,在彈出的新建類視窗中為工程建立類csayhello。在類的標頭檔案sayhello.h中,使用關鍵字_declspec(dllexport)宣告匯出類,並定義相關的成員變數和成員函式。**如下:
//class
_declspec(dllexport) csayhello ;
在類的實現檔案中實現各成員函式,**如下:
//#include
"sayhello.h
"#include
<
string
.h>
csayhello::csayhello()
csayhello::
~csayhello()
void
csayhello::say(
char
*szwords,
intnlen)
float
csayhello::sum()
void
csayhello::setnum(
float
fnum1,
float
fnum2)
編譯工程,在debug資料夾下生成dll檔案sayhello.dll和導入庫檔案sayhello.lib。如果採用.def檔案匯出類,就得將類的所有函式或變數均匯出。
3、呼叫dll。在視窗類標頭檔案中載入dll中的導入庫檔案,包含sayhello.h標頭檔案,並的宣告csayhello類物件。**如下:
#include
"sayhello.h
"#pragma comment(lib,
"sayhello.lib")
class
ctestdlg :
public
cdialog{//
construction
public
:ctestdlg(cwnd
*pparent
=null);
//standard constructor
csayhello mysayhello;//這裡就可以申明dll中建立的類的成員。
此時,就可使用類物件的成員函式了。
呼叫dll中的匯出類與呼叫dll中的匯出函式最大區別就是應用程式中需包含匯出類的標頭檔案。因此,需要將sayhello.h、sayhello.dll和sayhello.lib拷貝到呼叫者工程的根目錄下,才能正確執行。
呼叫匯出類的dll一般都採用載入時鏈結的方式。雖然也可以在執行時鏈結,但實現起來會很麻煩,需要從dll中讀取每乙個成員函式的位址,而且通常這些函式的名字是預編譯的符號,可能還要在dll裡給函式重新命名。
MFC動態鏈結庫和WIN32動態鏈結庫 及區別
1 dll的構成 每個應用程式都有乙個入口函式winmain,而每個dll也有乙個入口函式dllmain。dll跟應用程式一樣都含有資源 資料段和 段。dll跟應用程式的差別主要是dll有符號輸入表和符號輸出表,以方便應用程式呼叫dll中的函式。因為dll是由應用程式載入的,所以它本身沒有虛擬的記憶...
Win32 動態鏈結庫 二
1.檔案 新建 空專案 include windows.h include stdio.h pragma comment lib,debug xxp dll test.lib extern c declspec dllimport int addfun int a,int b 匯入動態鏈結庫的add...
MFC動態鏈結庫和WIN32動態鏈結庫
1 dll的構成 每個應用程式都有乙個入口函式winmain,而每個dll也有乙個入口函式dllmain。dll跟應用程式一樣都含有資源 資料段和 段。dll跟應用程式的差別主要是dll有符號輸入表和符號輸出表,以方便應用程式呼叫dll中的函式。因為dll是由應用程式載入的,所以它本身沒有虛擬的記憶...