4.非MFC DLL
4.1一個(gè)簡(jiǎn)單的DLL
第2節(jié)給出了以靜態(tài)鏈接庫(kù)方式提供add函數(shù)接口的方法,接下來(lái)我們來(lái)看看怎樣用動(dòng)態(tài)鏈接庫(kù)實(shí)現(xiàn)一個(gè)同樣功能的add函數(shù)。
如圖6,在VC++中new一個(gè)Win32 Dynamic-Link Library工程dllTest(單擊此處下載本工程
附件)。注意不要選擇MFC AppWizard(dll),因?yàn)橛肕FC AppWizard(dll)建立的將是第5、6節(jié)要講述的MFC 動(dòng)態(tài)鏈接庫(kù)。
圖6 建立一個(gè)非MFC DLL
在建立的工程中添加lib.h及l(fā)ib.cpp文件,源代碼如下:
/* 文件名:lib.h */
#ifndef LIB_H
#define LIB_H
extern "C" int __declspec(dllexport)add(int x, int y);
#endif
/* 文件名:lib.cpp */
#include "lib.h"
int add(int x, int y)
{
return x + y;
}
與第2節(jié)對(duì)靜態(tài)鏈接庫(kù)的調(diào)用相似,我們也建立一個(gè)與DLL工程處于同一工作區(qū)的應(yīng)用工程dllCall,它調(diào)用DLL中的函數(shù)add,其源代碼如下:
#include <stdio.h>
#include <windows.h>
typedef int(*lpAddFun)(int, int); //宏定義函數(shù)指針類型
int main(int argc, char *argv[])
{
HINSTANCE hDll; //DLL句柄
lpAddFun addFun; //函數(shù)指針
hDll = LoadLibrary("..\\Debug\\dllTest.dll");
if (hDll != NULL)
{
addFun = (lpAddFun)GetProcAddress(hDll, "add");
if (addFun != NULL)
{
int result = addFun(2, 3);
printf("%d", result);
}
FreeLibrary(hDll);
}
return 0;
}
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。