MFC动态链接库

隐式链接

一、

1,创建win32 dll工程

_declspec(dllexport) int add(int a,int b)
{
	return a+b;
}
_declspec(dllexport) int sub(int a,int b)
{
	return a-b;
}

 编译会生产lib和dll两个文件,lib是引入文件,主要记录dll文件的函数的一些信息,在连接的时候需要用到lib文件,dll文件时运行的时候需要使用。

  

2,在其他地方使用动态链接库,需要将lib和dll文件拷贝到当前工程目录下,

连接器中加入lib文件

在代码中(说明这两个函数是在外部dll中定义的):

extern int add(int a,int b);
extern int sub(int a,int b);

也可以使用(这样效率更高)

_declspec(dllimport) int add(int a,int b);
_declspec(dllimport) int sub(int a,int b);

  

3,使用:

int a=add(1,2);

 

4,为了方便别人调用,我们可以给动态链接库提供一个头文件,方便别人知道我们dll中有哪些函数

头文件TestDll.h

_declspec(dllimport) int add(int a,int b);
_declspec(dllimport) int sub(int a,int b);

 那么步骤2可以省略,直接在使用动态链接库的工程中引入该头文件即可

 

二、

 让动态链接库的源文件既可以被调用者使用,也可以让dll自己使用

TestDll.h

#ifdef DLL_API
//什么也不做
#else
#define DLL_API _declspec(dllimport)
#endif

DLL_API int add(int a,int b);
DLL_API int sub(int a,int b);

 TestDll.cpp

#define DLL_API _declspec(dllexport)
#include "TestDll.h"
int add(int a,int b)
{
	return a+b;
}

int sub(int a,int b)
{
	return a-b;
}

 导出类

class DLL_API Message
{

public:
         void showMessage();
};

 在需要调用的类中就引入头文件就可以直接Message msg创建对象;

 

 

 

你可能感兴趣的:(mfc)