開發環境:VC++ 6.0
VC++編寫動態鏈接庫有以下3種:Win32 DLL、MFC常規DLL(動態鏈接MFC)、MFC擴展DLL等;
Win32 DLL不採用MFC類庫結構,其導出函數爲標準的C接口,能被非MFC和MFC編寫的應用程序所調
用;
MFC常規DLL包含一個繼承自CWinApp的類,但是沒有消息循環;
MFC擴展DLL採用MFC的動態鏈接版本創建,它只能被用MFC類庫所編寫的應用程序所調用
要求:動態鏈接庫中編寫一個函數實現整數的加法運算,然後在別的程序中調用這個動態鏈接庫中的函數。
一、創建DLL:
1、打開visual c++ 6.0通過new創建一個win30 Dynamic-link Libary的工程,假設工程名爲AddTDLL
2、選擇最後一個選項,讓系統創建一些必要的文件
3、修改AddDLL.cpp文件:
//AddDLL.cpp
#include "stdafx.h"
#include "AddDll.h"
int add(int a, int b)
{ return a+b; }
4、修改AddDLL.h文件
//AddDLL.h
extern “C” _declspec(dllexport) int add (int a, int b);//導出函數聲明
5、編譯生成DLL文件:AddDLL.dll
二、測試編寫好的DLL文件
1、創建一個Win32工程,工程名爲useAddDll
2、編寫useAddDll.cpp文件:
//useAddDll.cpp
#include "stdafx.h"
#include "stdio.h"
int main()
{
typedef int (*pAdd)(int a, int b);
pAdd add;
HINSTANCE handle;
handle = LoadLibrary("****//AddDLL.dll") //加載動態鏈接庫,注意路徑
if(handle == NULL)
{
printf("動態鏈接庫加載失敗!/n");
return 1;
}
Add = (pAdd)GetProcAddress(handle,"add"); //獲取動態鏈接庫中add函數的指針
if(Add == NULL)
{
printf("找不到該函數/n");
return 1;
}
int result = Add(13,45);
printf("the result is %d/n",result);
FreeLibrary(handle); //釋放動態鏈接庫
return 0;
}
程序基本完成,由於本人水平有限,有錯誤請大家指出!