创建动态链接库及类的导出
创建一个动态库项目BDLL,在其中创建一个类B作为导出类
//头文件
#ifndef BBB_h__
#define BBB_h__
class __declspec(dllexport) BBB
{
public:
BBB(void);
~BBB(void);
int GetB();
};
#endif // BBB_h__
//源文件
#include "BBB.h"
BBB::BBB(void)
{
}
BBB::~BBB(void)
{
}
int BBB::GetB()
{
return 100;
}
编译生成动态库BDLL.dll
再创建一个动态库项目MyDLL,在其中创建一个类A作为导出类
//头文件
#ifndef AAA_h__
#define AAA_h__
class __declspec(dllexport) AAA
{
public:
AAA(void);
~AAA(void);
int GetNumber();
};
#endif // AAA_h__
//源文件
#include "AAA.h"
#include "BBB.h"
AAA::AAA(void)
{
}
AAA::~AAA(void)
{
}
int AAA::GetNumber()
{
BBB bbb;
int t = bbb.GetB();
return t;
}
在动态库MyDll中去使用动态库BDll中定义的类B,使用方法如下:
先将动态库BDll的头文件BBB.h放在MyDll项目的include文件夹中,将lib文件BDll.lib放在lib文件中(只编译是不需要dll文件的),目录如下:
再在MyDll项目中做如下配置:
附加包含目录
附加库目录
附加依赖项
编译生成动态库MyDLL.dll
创建一个测试程序Test来调用MyDLL.dll,调用过程如下:
先将动态库MyDLL的头文件AAA.h放在Test项目的include文件夹中,将lib文件MyDll.lib放在lib文件中,将MyDll.dll和BDll.dll放在Test.exe的运行目录下(运行是需要dll文件的),注意:此处是不需要BBB.h和BBB.lib的。
#include "AAA.h"
int main()
{
AAA a;
int n = a.GetNumber();
return 0;
}