C语言隐藏自己源码成lib静态库的和使用lib静态库的方法

news2024/11/23 7:38:52

首先从头开始创建一个新项目:

 

 

 

 

这个sub.c内的文件内容很简单,就写一个减法函数

// 定义一个减法函数,传入两个整数,返回差
int sub(int x, int y) {
    return x - y;
}

// 定义一个减法函数,传入两个整数,返回差
int sub(int x, int y) {
	return x - y;
}

 再添加一个sub.h的头文件

 头文件中的内容也很简单,就是声明减法函数

#pragma once

/*
这里写对这个函数的说明文档,这是一个减法函数,传入两个值,返回差。
*/

int sub(int x, int y);   // 生命sub这个函数

好了,到这里我写的这个简单的程序就写完了,只实现了一个简单的小功能,现在有人想买我的代码,我想卖但是我又不想别人知道我的源码,具体的实现过程是什么?所以就出现了下面的内容,把自己的代码,编译成静态库的文件,这样别人就看不到我的源码了,功能还不影响使用。具体方法如下:

 

 然后在sub.c程序下运行一下程序,在输出列表中就有了test.lib的文件目录

 然后去这个目录下拷贝生成的文件,将sub.h头文件和这个test.lib文件卖给对方就行了。

 下面就说说对方收到了你的文件要怎么使用了?

首先将两个文件放到自己的工程目录下。

 然后编写自己的程序代码:

#include"stdio.h"
#include"sub.h"

#pragma comment(lib, "test.lib")

int main() {
	int x = 20;
	int y = 12;
	int c = sub(x, y);
	printf("%d", c);
	return 0;
}

经过上面的步骤咱们就正常的调用了别人卖给咱们的功能代码了,同时咱们还看不到别人的源码,功能还不限制使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/559270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7. 数据库MySQL

本文介绍了数据库mysql的安装配置过程,以及通过VsCode调用数据库实现一些功能 一、安装 如果之前安装过,或者安装失败。清除MySQL缓存并重新安装:运行以下命令以清除所有MySQL缓存文件,并重新安装它们 sudo apt-get remove --pu…

JAVA基础(各种类)

Object类 1、Object类中有许多方法是用native修饰的,这些方法是本地方法,用C语言实现。 2、Object类的一些方法: clone()方法:需要继承Clonable接口,并覆写clone(),修改为public权限,原来为p…

Halcon中从两组点的对应关系生成仿射矩阵,及思考原理和代码实现

有几个算子有点类似,看了下区别 1.vector_to_rigid( : : Px, Py, Qx, Qy : HomMat2D) 2.vector_to_similarity( : : Px, Py, Qx, Qy : HomMat2D) 3.vector_to_aniso( : : Px, Py, Qx, Qy : HomMat2D) vector_to_rigid 这个是刚性变换, 只有旋转和平移…

参考企业微信日程 通过vue+elementUi编写一个按月统计会议的日程计划组件

这个组件的话 需要三个第三方依赖 npm install --save chinese-lunar-calendar sass sass-loader element-uisass因为我这里 还是习惯写sass样式 毕竟真的方便啊 chinese-lunar-calendar 是一款将日期转为农历的工具 element-ui主要是表格真的方便 在 项目src下的main.js入口…

如何学好人工智能?

“在主流的视频直播教学之外,直接与老师在课件上互动能够更快地让我进入学习状态。” 大家的时间都很宝贵,当我们好不容易下定决心要学习一门新知识时,各种影响学习的噪声会在本不富裕的耐心上大打折扣,万事开头难变成了真理。特别…

[技术分享]Android平台实时音视频录像模块设计之道

实现背景 录像有什么难的?无非就是数据过来,编码保存mp4而已,这可能是好多开发者在做录像模块的时候的思考输出。是的,确实不难,但是做好,或者和其他模块有非常好的逻辑配合,确实不容易。 好多…

考研复试第十六天:合并果子 【哈佛曼树】

前置知识 哈佛曼树:我们先来复习一下啥叫做哈佛曼树 1.背景 我们有下面这样一个字符串需要编码,就是将下面的字符转为二进制。我们采用的方法是前缀编码,用一颗树的叶节点来放字符。 2.前缀编码 编码是咋样的呢?看下面这个例子…

BurpSuite—Project options模块(项目选择)

本文主要BurpSuite—Project options模块(项目选择)介绍的相关内容 关于BurpSuite的安装可以看一下之前这篇文章: http://t.csdn.cn/cavWt 一、简介 Project options主要用来对Project的一些设置。 二、模块说明 Project options主要由五个模块组成: 1.Connect…

Zabbix“专家坐诊”第192期问答汇总

问题一 Q:请问下,客户机snmptrap发告警为啥server web收不到,关键是snmptrap日志已经收到,zabbix server配置以及开启snmptrap1 snmptrapvar log snmptrap snmptrap.log? A:有配置trap的监控项吗&#xff…

Install ELK+Filebeat on Kubernetes Cluster with Helm

目录 Node & Software & Docker Images Lists Prerequisites Install ELK Manually Deploying ElasticSearch Create deployment Expose deployment Deploying Kibana Create deployment Accessing the Kibana UI Deploying Logstash Create ConfigMap and…

快手上市后首次盈利,直播电商业务成造血利器

5月22日盘前,快手业绩还没有发布,股价却先涨为敬,中信证券、彭博、中金公司等多家机构给出超预期业绩的预测。盘后公布的业绩确实超过市场的一致预期,市场在今天也给出正面回应,股价再次上扬,最高点达57.10…

revit窗族的平面出图设置,revit快速创建幕墙

一、revit窗族的平面出图设置 在平面视图中,为了满足出图的需要,我们经常要修改在不同的详细程度的可见性设置。 例如我们的窗在没有进行设置时在粗略/中等/精细的详细程度中都可以看到清晰的窗体构件。那么要使窗在精细程度中才可以看见详细的窗体结构&…

Sentinel如何实现对分布式系统的高可用性和流量控制?我们通过源码一起学习

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将详细介绍Sentinel源码实现对分布式系统高可用性和流量控制,后续文章将详细介绍Sentinel的其他知识。 如果文章有什么需要改进的地方还请大佬不吝赐教…

蓝桥杯单片机DS18b20单总线测温模块常见问题解决

蓝桥杯单片机DS18b20单总线测温模块常见问题解决 有道是:“溪水声声留我住,梅花朵朵唤人回” DS18b20测温模块作为一个比较简单、稳定的蓝桥杯单片机外设模块, 使用时却经常出现各种问题,总是让我们不禁三番多次回顾其基础知识…

再获认可!腾讯连续三年被Gartner列为CWPP供应商之一

随着云的快速发展,企业的工作负载已经从服务器发展到虚拟机、容器、serverless等,部署的模式也日益复杂,包括公有云、混合云和多云等。在此背景下,传统的主机安全防护已无法满足需求,CWPP(云工作负载保护平…

飞鹤乳业携手用友,重塑财务价值,开创财务共享服务新局面

在这个数字化时代,企业需要不断地面对各种变革和挑战,而数字化财务共享服务正是帮助企业应对挑战和实现数字化转型的有效手段之一。飞鹤乳业携手用友,以数字化财务共享服务平台为契机,旨在整合财务资源,优化财务流程&a…

小白必看!数据库自学入门教程,免费的SQL认证课程

在数据库国产化浪潮下,你是否想尽快更新你的知识体系?好程序员整理了免费的SQL认证教程,方便大家按需选择学习,证明自己的实力,获得更多职场机会! 1.SQL数据分析- Udacity 2.SQL入i]- Codecademy 3.SQL Ser…

从零实现一个数据库(DataBase) Go语言实现版 4.B树实现(Part1))

英文源地址 本章将使用Go语言实现一个不可变地B树.这是一个最小实现, 因此很容易理解. Node节点的格式 我们的B树最终将被持久化到磁盘上, 因此我们首先需要为b树节点设计数据格式.如果没有这种格式, 我们将无法知道节点的大小以及何时拆分节点. 一个节点包含: 一个固定大小…

Bug可以说是一种缺陷吗?

我叫缺陷,从被创建至关闭,到最后做缺陷分析,这是我的完整生命周期。我的整个生命周期贯穿着整个项目的项目周期,因此,掌握我的生命周期,不止是测试人员必修的课程,也是测试人员的灵魂。 缺陷的…

Android 动态加载资源

资源文件分类 1.android资源文件分为两类: 第一类是res目录下存放的可编译资源文件,编译时,系统会自动在R.java中生成资源文件的十六进制值,如下所示: public final class R {public static final class id {public …