VS如何将核心函数封装成dll、lib,并供给第三方调用?

我们在编写项目过程中,有时难免需要将项目核心源码进行加密,那么如何利用VS实现呢?最佳的策略便是将核心代码编译成动态库dll了。

今天呢,简单地以一个小例子,来介绍一下我自己是如何生成dll的,如有不到位的地方,还请大家留言指正,不甚感激。

此处我们以一个问题来展开行文:

A客户需要小明实现这样一个功能:利用QT实现两个整数加法求和的操作,不需要加法求和的具体实现,也就是不需要源码,只需要能给他dll,他们直接调用它进行加法操作即可。

接到任务后,小明很快便成了A客户要求的任务。那么他具体是如何实施的呢?

一 先封装核心函数,实现功能

  先新建一个QT demo,添加控件如下:

其中求和函数属于核心函数,是通过自己的聪明才智编写实现的,头文件以及实现函数如下:
VisionIMAX.h:

#pragma once
#include "iostream"
#include"sstream"
using namespace std;
class VisionIMAX
{
 public:///求和计算 
 static int addInt(int &firstNum,int &secondNum);
 };

VisionIMAX.cpp:

#include "VisionIMAX.h"///求和计算
int VisionIMAX::addInt(int &firstNum, int &secondNum)
{   
 
  int total = firstNum + secondNum;  
  return total;
}

  为了将求和函数在给他人调用时,避免让对方窥见源码,此处我们将其编译成dll,提供给用户,具体操作如下。

二 将核心函数生成dll、lib(此处以debug模式下为例,release模式下相类似)

  在原解决方案中,添加一个新项目,命名为VisionIMAX。

在项目工程VisionIMAX中添加VisionIMAX.h和VisionIMAX.cpp,实现求和函数。

VisionIMAX.h文件如下:

#include "iostream"
#include"sstream"
using namespace std;
///VISIONIMAX为类名的大写
#ifdef VISIONIMAX_EXPORTS
#define VISIONIMAX_API __declspec(dllexport)
#elif defined (VISIONIMAX_API_IMPORT_DLL)
#define VISIONIMAX_API __declspec(dllimport)
#else
#define VISIONIMAX_API
#endif
class VISIONIMAX_API VisionIMAX
{

 public:    ///求和计算   
 static int addInt(int &firstNum, int &secondNum); 

};

VisionIMAX.cpp文件如下:

#include "VisionIMAX.h"
///求和计算

int VisionIMAX::addInt(int &firstNum, int &secondNum) 
{    

int total = firstNum + secondNum;    
return total; 

}

之后,我们便可以生成dll和lib了,操作如下图所示:

对应生成的dll和lib所在位置如下图中所示:

到对应目录下,即可看到编译生成的dll和lib文件。

三 调用dll、lib文件

对应上述生成的dll和lib,我们如何在工程中调用呢?
首先,将原解决方案中的VisionIMAX.h和VisionIMAX.cpp文件移除,接下来步骤如下
1)在原项目中新建两个文件夹「include」和「lib」,其中「include」中存放上述第二步中编写的「VisionIMAX.h」文件,「lib」中存放上述第二步中生成的dll和lib文件。

2)将include中的VisionIMAX.h头文件添加到addGUI项目工程中;

3)在将编译好的dll和lib的目录添加进工程中。

稍加注意的是,由于我们新建了一个文件夹「include」,因而在调用VisionIMAX.h头文件的地方,需要改为:#include "./include/VisionIMAX.h"

经过测试,原程序调用dll和lib,可以正确进行加法计算,如图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Love coldplay

你的鼓励,将让我持续更新

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值