标签:
非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