动态链接库的生成(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

posted @ 2015-08-22 19:26  lwn6  阅读(332)  评论(0编辑  收藏  举报
什么是幸福?天天在做自己想做的事情,家人、同事、朋友、客户、网友都和和睦睦,身体健康、钱包鼓鼓、女朋友天天开心、生活无忧无虑就是最大的幸福