C语言番外篇(4)------------------>VS环境下源码的隐藏
假设你是一个优秀的程序员,开发了一款功能十分强大的计算器。现在有一家做计算器的公司看上了你的功能,想通过每一年给你几万块钱使用这个功能。那我们是只提供一个头文件和静态库给他们使用这个功能就行呢?还是连同源代码一起给这家公司呢?相信聪明的你心中应该有了答案了吧!
本篇文章介绍的是C语言开发过程中,如何将源码隐藏,通过使用头文件和静态库调用函数。
本文以一个含有整数的加、减、乘、除四个函数的源文件和进行函数的声明的头文件为例,先讲述未隐藏时的代码实现,再讲述如何隐藏源代码以及如何通过静态库和头文件使用这些功能。
一、未隐藏的源码
各文件说明:
test.c---------------------------->存放主函数的源文件
compute.c---------------------->存放加、减、乘、除四个功能的源文件
compute.h---------------------->存放加、减、乘、除四个功能的头文件
compute.c
//两个整数的相加
int Add(int x, int y)
{
return x + y;
}
//两个整数的相减
int Sub(int x, int y)
{
return x - y;
}
//两个整数的相乘
int Mul(int x, int y)
{
return x * y;
}
//两个整数的相除
int Div(int x, int y)
{
return x / y;
}
compute.h
//加法函数的声明
//功能:实现两个整数的相加
//x:一个整数
//y:一个整数
//结果返回一个整数
int Add(int x, int y);
//减法函数的声明
//功能:实现两个整数的相减
//x:一个整数
//y:一个整数
//结果返回一个整数
int Sub(int x, int y);
//乘法函数的声明
//功能:实现两个整数的相乘
//x:一个整数
//y:一个整数
//结果返回一个整数
int Mul(int x, int y);
//除法函数的声明
//功能:实现两个整数的相除
//x:一个整数
//y:一个整数
//结果返回一个整数
int Div(int x, int y);
test.c
#include <stdio.h>
#include "compute.h"
int main()
{
int a = 0;
int b = 0;
scanf("%d%d",&a,&b);
int ret1 = Add(a,b);
int ret2 = Sub(a, b);
int ret3 = Mul(a, b);
int ret4 = Div(a, b);
printf("ret1=%d\n",ret1);
printf("ret2=%d\n", ret2);
printf("ret3=%d\n", ret3);
printf("ret4=%d\n", ret4);
return 0;
}
运行结果:
二、隐藏源代码
打开VS2019,新建一个工程,此处不做详细介绍。
2.1预备工作:将原来写好的compute.c与compute.h放入现工程中。
(1)鼠标右击工程,点击属性。
(2)将应用程序换成静态库
(3)勾选静态库之后,点击应用按钮
(4)点击应用之后,点击确定
(5)点击生成,选择生成解决方案
(6)成功生成静态库
根据第六步中的提示信息,找到静态库的存放路径
那么静态库中的内容是什么呢?静态库中都是一群乱码。
从这里也可以看到我们这种方法,某种程度上能够保护我们的成果。
2.2演示如何使用静态库:再次新建工程,将静态库和头文件放入工程中。(新建工程过程省略)
(1)找到静态库和头文件的位置,将其复制到工程路径中
(2)在工程中添加头文件
(3)导入静态库
(4)运行测试
测试通过。