标签:
非MFC动态库的创建。。。
一个lib.cpp,一个lib.h
/*lib.h*/ #ifndef LIB_H #define LIB_H //声明add为dll的导出函数. extern "C" int _declspec(dllexport)add(int x,int y); #endif
也可以加上def文件
; lib.def : 导出DLL函数
LIBRARY DllTestDef
EXPORTS
add @ 1
非MFc动态库的调用
1.静态调用
//静态的调用dll动态库,已将dll和lib文件放在相应的工作路径下了
#include <STDIO.H>
#pragma comment(lib,"dllTEST.lib")//..告诉编译器与dll相关的lib文件放在哪。
extern "C"_declspec(dllimport)add(int x,int y);//声明导入函数
int main()
{
int result=add(2,3);
printf("2+3=%d \n",result);
return 0;
}
2.动态调用
//动态的调用dll动态链接库.
//只需要将dll放在相应的工作目录下即可
#include<stdio.h>
#include<windows.h>
//定义一个与add函数参数类型和返回指针类型均相同的函数指针类型.
//随后在main函数中实例化
typedef int(*lpAddFun)(int,int);//宏定义函数指针类型
int main()
{
HINSTANCE hDLL;//DLL句柄
lpAddFun addFun;//实例化上面的函数指针类型
hDLL=LoadLibrary("./dllTEST.dll");//动态的加载DLL模块,并将DLL的模块句柄给hDLL.
if(hDLL!=NULL)
{
addFun=(lpAddFun)GetProcAddress(hDLL,"add");//将DLL模块中的add函数的地址给addFun
if(addFun!=NULL)
{
int result=addFun(2,3);//通过addFun来调用add函数
printf("2+3= %d \n",result);
}
FreeLibrary(hDLL);//将DLL动态模块卸载
}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/yanliang12138/p/4478308.html