DLL (Dynamic Link Library)動態鏈接庫,是一個包含可由多個程序同時使用的代碼和數據的庫,DLL不是可執行文件,其優點主要有:1. 有助于節省內存;2. 有助于資源共享;3. 不需編譯的軟件系統升級;4. 支持多語言程序。當然,有的時候我們也可以將一些核心的或者不愿意公開提供的函數編寫為DLL,從而起到隱藏和保護的作用。
下面結合實例詳細說明在Visual Studio 2008 SP1 IDE中如何創建、編寫和導出VC++ MFC DLL,以及如何調用生成的DLL。(完整實例可在我的CSDN資源中下載:[http://download.csdn.net/detail/margin1988/8336697](http://download.csdn.net/detail/margin1988/8336697))
(1)打開Visual Studio 2008 SP1 IDE,創建VC++ MFC DLL工程,如圖所示:

(2)在自動生成的“工程名.cpp”(如:FirstDLL.cpp)文件中,編寫要導出的函數(注:在該項目屬性中工程字符集選擇了“使用多字節字符集”):
~~~
/**函數:int calculateLineNum(CString filePath)
功能:用于計算文本文件的行數
描述:只需要指定文本文件的路徑,若找到,則返回其行數,若沒找到,則返回0 */
extern "C" _declspec(dllexport) int calculateLineNum(CString filePath){
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CStdioFile file;
CString str;
int lineNum=0;
if (file.Open(_T(filePath),CFile::modeRead | CFile::typeText))
{
file.SeekToBegin();
while (file.ReadString(str))
{
lineNum++;
}
file.Close();
}
return lineNum;
}
~~~
(3)點擊“生成解決方案”,生成了供程序調用的DLL文件和Lib文件(該例中只是導出了一個函數,不需要.h文件);
(4)生成DLL及其導出函數的調用方法:
1)將.dll和.lib文件拷貝到你的工程的目錄下;
2)在程序中預定義和導入庫和函數:
~~~
#pragma comment(lib, "FirstDLL.lib")
extern "C" _declspec(dllimport) int calculateLineNum(CString filePath);
~~~
3)或者,也可以在工程的屬性中添加鏈接:

然后,程序中就只需要這一句:
~~~
extern "C" _declspec(dllimport) int calculateLineNum(CString filePath);
~~~
4)調用DLL中的導出函數:
~~~
CString path="ReadMe.txt";
int num = calculateLineNum(path);
~~~
- 前言
- VC++中自定義熱鍵及響應
- CFileDialog文件對話框
- VC++中客戶區保存為BMP圖片
- VC++讀、寫注冊表
- VC++播放音頻文件和音頻數據的方法
- VC++調用Matlab編寫的DLL(混合編程)
- VC++中文件讀、寫和其他相關操作匯總
- VC++獲取系統當前時間
- VC++按鈕控件字體設置
- VC++軟件界面風格簡單美化
- VC++中一些常用的數據類型之間的相互轉化
- VC++中截取字符串的方法
- VC++中vector矢量的使用方法及隨機相關
- VC++中結構體的定義及使用
- VC++中List Control控件的使用方法介紹
- VC++中窗口過程函數及其消息發送、響應機制介紹
- VC++中Ribbon編程架構及SDI架構多視圖切換介紹
- 串口通信基礎知識及VC++實現
- VC++中單個鍵盤按鍵的響應
- VC++中的計時器及多媒體高精度計時器
- VC++編寫DLL導出函數及其調用方法
- VC++對話框(CDialog)的全屏顯示及控件居中顯示
- VC++對話框(CDialog)添加背景圖片
- VC++圖片控件(Picture Control)顯示資源位圖(BMP)、文件位圖(BMP)、其它格式文件圖片(JPG\PNG\BMP)的方法
- VC++對Access數據庫的操作(查詢、插入、更新、刪除等)