当前位置: 首页 > news >正文

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)运行测试 

测试通过。 

相关文章:

  • Dify部署踩坑指南(Windows+Mac)
  • Spring Boot 项目中 Redis 常见问题及解决方案
  • 常见的限流算法有哪些?
  • 社区智慧养老标准规范全解析
  • Java停车平台高并发抢锁技术方案设计 - 慧停宝开源停车管理平台
  • C语言番外篇(5)-------------->作用域与生命周期
  • 基于ANTLR4的大数据SQL编辑器解析引擎实践|得物技术
  • aws(学习笔记第三十一课) aws cdk深入学习(batch-arm64-instance-type)
  • 贪心算法一
  • python实现的生态模拟系统
  • 第5章:vuex
  • Linux部署java项目
  • NO.26十六届蓝桥杯备战|字符数组七道练习|islower|isupper|tolower|toupper|strstr(C++)
  • 支持多数据源的 MyBatis-Plus 实现
  • C语言基础之【指针】(下)
  • Python的那些事第四十二篇:Python的无人机监控环境监测系统研究
  • macos查询pip默认镜像地址
  • 基于Hadoop的热门旅游景点推荐数据分析与可视化系统(基于Django大数据技术的热门旅游景点数据分析与可视化)
  • 抽象类与普通类的核心区别
  • Leetcode 264-丑数/LCR 168/剑指 Offer 49
  • A股三大股指高位震荡收涨:黄金股大涨,两市成交11735亿元
  • 中方敦促美国停止将溯源问题政治化
  • 连续两个交易日涨停,华夏幸福:生产经营活动正常,不存在影响股价波动的重大事宜
  • 减重人生|吃得越少越好?比体重秤上的数字,更有意义的是什么?
  • 瑞幸首度牵手成都国际非遗节,用一杯饮品将非遗之美推向全国
  • 左手免费午餐右手花开岭,邓飞14年公益之路的中国贡献