4.非MFC DLL
4.1一個(gè)簡(jiǎn)單的DLL
第2節給出了以靜態(tài)鏈接庫方式提供add函數接口的方法,接下來(lái)我們來(lái)看看怎樣用動(dòng)態(tài)鏈接庫實(shí)現一個(gè)同樣功能的add函數。
如圖6,在VC++中new一個(gè)Win32 Dynamic-Link Library工程dllTest(單擊此處下載本工程
附件)。注意不要選擇MFC AppWizard(dll),因為用MFC AppWizard(dll)建立的將是第5、6節要講述的MFC 動(dòng)態(tài)鏈接庫。
圖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節對靜態(tài)鏈接庫的調用相似,我們也建立一個(gè)與DLL工程處于同一工作區的應用工程dllCall,它調用DLL中的函數add,其源代碼如下:
#include <stdio.h>
#include <windows.h>
typedef int(*lpAddFun)(int, int); //宏定義函數指針類(lèi)型
int main(int argc, char *argv[])
{
HINSTANCE hDll; //DLL句柄
lpAddFun addFun; //函數指針
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;
}
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。