动态链接库的生成(dll)和 动态链接库隐式and显式调用
一、构建动态链接库(dll.dll dll.lib dll.h)
说明: .dll 是在执行程序是调用 .lib 是在连接程序是调用 .h是在编译程序时调用
1.头文件(声明导入函数):_declspec(dllimport) int add(int a,int b);//(头文件不参加.dll文件的生成)
2.cpp文件(定义导出函数):_declspec(dllexport) int add(int a,int b){return a+b;}
3.结果得到.dll .lib .h三个文件
二、示例程序
1、头文件dll
#ifdef DLL_API #else #define DLL_API // 将DLL_API定义为空;动态和静态都是可用的 在动态链接库中#define DLL_API _declspec(dllimport)可用,静态不行 #endif DLL_API int add(int a,int b); DLL_API int subtract(int a,int b); class DLL_API Point { public: int product(int a,int b);//乘积 };
2、cpp文件
#define DLL_API _declspec(dllexport) #include "pcl.h" int add(int a,int b){return a+b;} int subtract(int a,int b){return a-b;} int Point::product(int a,int b) { return a*b; }
动态链接库隐式and显式调用
一、隐式应用动态链接库(三个文件怎么用)
1.新建一个控制台工程,在工程中添加.h头文件路径(菜单Tools->Options->Directors)//.h文件用法
2.添加add.lib(工程名字上右键->Settings->Link) 或者在cpp中写下代码 #pragma comment (lib,"xxx.lib") //.lib文件的用法
3.注意将.dll和.lib文件放到工程文件夹下面//.dll 文件的用法
实例代码
#include <stdio.h> #include <iostream> #include "pcl.h" #pragma comment (lib,"pcl.lib") using namespace std; void main() { int a=0,b=2,c=3,d=3; c=add(a,b); }
二、显式应用动态链接库(四句代码,红色部分替换即可)
1、定义一个句柄对象 HINSTANCE hInst;
2、加载函数 hinst=LoadLibrary("add.dll");
3、定义函数指针类型 typedef int(*ADDPROC)(int a,int b);//注意,ADDPROC是一个类型,不是一个变量,过渡作用
4、定义变量并赋值 ADDPROC Add=(ADDPROC)GetProAddress(hInst,"add");
5、至此就可以运用函数Add(5,3);了。
http://www.cnblogs.com/hlxs/p/3783920.html
链接:http://pan.baidu.com/s/1o6KgHGe 密码:5zaj