您好,登录后才能下订单哦!
这篇文章主要介绍“C++如何封装成DLL并调用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++如何封装成DLL并调用”文章能帮助大家解决问题。
本例工程名称为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),点击确定
④右键解决方案资源管理器的工程名称,选择生成
此时,会在工程路径下的x64\Debug文件夹中看到你所生成的.dll和.lib文件(比如我的在:E:\C++\RunLIB\x64\Debug路径中)
到这里,我们已经完成了封装的过程,那么我们应该如何调用我们的接口呢?
①将生成的.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并调用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。