C++封装成DLL并调用的实现
使用vs2019将c++封装成DLL并调用主要有以下几个步骤:
1)新建工程,编写要封装的.cpp和.h文件;
2) 生成动态链接库.dll和静态链接库.lib;
3) 调用通过.h文件调用;
第一步:编写.cpp和.h文件
本例工程名称为RunLIB
.cpp如下:
#include "pch.h"
#include<iOStream>
class FHello :public IInterface
{
public:
FHello();
virtual void Init();
virtual void Destroy();
virtual char* GetName();
private:
char name[1024];
};
FHello::FHello()
{
memset(name, 0, 1024);
strcpy(name, "hello");
}
void FHello::Init()
{
printf("FHello::Init\n");
}
void FHello::Destroy()
{
printf("FHello::Destroy\n");
}
char* FHello::GetName()
{
return name;
}
IInterface* IInterface::CreateInterface()
{
return new FHello();
}
.h如下:
#ifndef PCH_H
#define PCH_H
#define _CRT_SECURE_NO_WARNINGS
#define FENGZHUANGCPP_api __declspec(dllexport) //导出
//动态链接库
class FENGZHUANGCPP_API IInterface
{
public:
static IInterface* CreateInterface();
virtual void Init() = 0;
virtual void Destroy() = 0;
virtual char *GetName() = 0;
};
#endif //PCH_H
第二步:生成动态链接库.dll和静态链接库.lib
①右键解决方案资源管理器的工程名称>>属性>>属性配置>>常规>>配置类型,将配置类型选为动态库(.dll),点击确定
②右键解决方案资源管理器的工程名称,选择生成
③右键解决方案资源管理器的工程名称>>属性>>属性配置>>常规>>配置类型,将配置类型选为静态库(.lib),点击确定
④右键解决方案资源管理器的工程名称,选择生成
此时,会在工程路径下的x64\Debug文件夹中看到你所生成的.dll和.lib文件(比如我的在:E:\C++\RunLIB\x64\Debug路径中)
到这里,我们已经完成了封装的过程,那么我们应该如何调用我们的接口呢?
第三步:调用通过.h文件调用;
①将生成的.dll和.lib,以及pch.cpp放在一个名为dllib的文件夹中(为了后面调用)
②使用vs新建一个名为diaoyong的工程(同时会自动生成一个diaoyong.cpp),将①的文件夹复制到工程目录下
③在diaoyong.cpp输入调用的代码
#include "dlllib/pch.h"
#include <iostream>
using namespace std;
#pragma comment(lib,"dLLL.lib")
//动态库在运行时,会把代码链接到目标
//静态库在编译期,会把代码链接到目标
int main()
{
IInterface* IF = IInterface::CreateInterface();
cout << IF->GetName() << endl;
IF->Init();
IF->Destroy();
return 0;
}
此时,运行会出现如下报错,是因为我们没有把包含.lib的文件夹路径加载进来,我们需要执行的操作:
1)右键解决方案资源管理器的工程名称>>属性>>配置属性>>C/C++>>附加包含目录>>编辑>>.lib文件的路径放进去
2)右键解决方案资源管理器的工程名称>>属性>>项目属性>>配置属性>>链接器>>附加库目录>>编辑>>.lib文件的路径放进去
加载完成后,在运行我们编写的diaoyong.cpp,就成功啦!!!!
到此这篇关于C++封装成DLL并调用的实现的文章就介绍到这了,更多相关C++封装成DLL并调用内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
相关文章