VC创建DLL动态链接库及其调用
1.1 創(chuàng)建dll項(xiàng)目
1.2 為dll項(xiàng)目編寫源文件
頭文件dllDemo.h
extern "C" _declspec(dllexport) int Sum(int a,int b);//加法函數(shù)。
extern "C" _declspec(dllexport) int Max(int a, int b);//取較大值函數(shù)
extern "C" _declspec(dllexport) int Min(int a, int b);//取較小值函數(shù)
源文件dllDemo.cpp
#include "dllDemo.h"extern "C" _declspec(dllexport)int Sum(int a, int b)
{return a+b;}
extern "C" _declspec(dllexport)int Max(int a, int b)
{
??? if(a>=b)
??????? return a;
??? else
??????? return b;
}
extern "C" _declspec(dllexport)int Min(int a, int b)
{
??? if(a>=b)
??????? return b;
??? else
??????? return a;
}
1.3 生成dll文件
編譯源文件,如果沒(méi)有出現(xiàn)錯(cuò)誤提示,那么,在項(xiàng)目文件根目錄的Debug文件夾內(nèi)會(huì)生成
一個(gè)dll文件“dllDemo.dll”。
??
2 DLL調(diào)用
2.1 用C++調(diào)用顯式鏈接
新建一個(gè)Win32的控制臺(tái)程序進(jìn)行顯式調(diào)用:
2. 新建cpp文件“UseDll.cpp”
3. 將在第一節(jié)中,在Debug目錄下編譯生成的“dllDemo.dll”(顯式調(diào)用時(shí)只需要這一
個(gè)文件就夠了)文件復(fù)制到“UseDll”項(xiàng)目下的Debug文件夾根目錄下
4. 在“UseDll.cpp”文件中編寫以下代碼對(duì)dll中的函數(shù)進(jìn)行顯式調(diào)用?
代碼:#include <iostream>
#include< windows .h>
using namespace std;
void main(void)
{
?typedef int(*pMax)(int a,int b);
?typedef int(*pMin)(int a,int b);
?pMax Max=NULL;
?pMin Min=NULL;
?HINSTANCE hDLL;
?hDLL=LoadLibrary("dllDemo.dll");//加載動(dòng)態(tài)鏈接庫(kù)dllDemo.dll文件;
?Max=(pMax)GetProcAddress(hDLL,"Max");
?Min=(pMin)GetProcAddress(hDLL,"Min");
?if (Max)//如果取出函數(shù)成功,則執(zhí)行下面的語(yǔ)句
?{
??int A=Max(5,8);
??cout<<"比較的結(jié)果為"<<A<<endl;
?}
?if (Min)
?{
??int B=Min(5,8);
??cout<<"比較的結(jié)果為"<<B<<endl;
?}
?FreeLibrary(hDLL);//卸載MyDll.dll文件
}
5、運(yùn)行效果如下:
原網(wǎng)站上的文章里面代碼有點(diǎn)小小的錯(cuò)誤,在這里我已經(jīng)修改好了。可能還存在不足之處,望多包涵!
?
?
//
?轉(zhuǎn)載:http://www.2cto.com/kf/201205/132151.html
總結(jié)
以上是生活随笔為你收集整理的VC创建DLL动态链接库及其调用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python 文件和目录 当前目录以及
- 下一篇: QT中的QButtonGroup