C语言函数—关于静态库

具体的函数声明和定义请参考上一篇文章

如果我们成为了库的开发者,要卖给别人C语言库,该怎么办呢?

A不会写减法,想找你买一个函数

但是,他给的太少了,你不想把源码卖给他

那怎么办呢?

首先,肯定不能卖.c文件和.h文件呀

我们先新建一个工程

image-20240313180714214

这里用VS2022演示

image-20240313180849726

首先肯定得创建一个头文件和源文件

然后简单写一下我们最贵的客户要求的实现代码以及头文件(声明函数)

image-20240313181435390

//test.c
#define _CRT_SECURE_NO_WARNINGS 1int Sub(int x, int y)
{return x - y;
}
#pragma once
int Sub(int x, int y);

那我们接下来该怎么做呢?

我们需要修改属性中的配置类型

image-20240313181634707

image-20240313182051976

选择静态库点击应用,点击确定

点击重新生成解决方案

image-20240313182527535

可以看到已经生成了lib文件

image-20240313182548027

这个文件就是vs把.c文件和.h文件编译产生的一个静态库

我们打开看一下能不能看懂

image-20240313183120788

全是乱码

我们现在把这个project1.lib卖给刚刚的A程序员,他看不懂,怎么办

很简单,我们把.h文件一起卖,我们只要注释的详细一点,A就能看懂

image-20240313183844162

现在我是A程序员

首先把文件粘贴到项目里(最下面两个文件)

image-20240313221243666

先把头文件导入(选择.h)文件即可

image-20240313221410938

#include"test.h"
int main()
{int a = 10;int b = 20;int c = Sub(a, b);printf("%d\n", c);return 0;
}

还是会报错

image-20240313184257241

解决办法很简单,我们只需要导入刚刚买来的静态库就行

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

image-20240313222448649

可以成功运行


但是过程之中还是遇到一些小插曲

在函数编译的过程中,main函数出现重定义,解决方法就是防止源文件中出现多个主程序,这在C语言和C++中都是不可取的

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android SDK 开发 云托管

开发SDK,拒绝重复造轮子。 本文陈述两种SDK开发方式,第一种AAR方式;第二种远程依赖方式。 具体步骤分为: 一、如何开发SDK? 二、如何打包AAR? 三、如何打包AAR? 四、如何进行SDK远程托管? 五、如…

【JavaScript】数据类型转换 ① ( 隐式转换 和 显式转换 | 常用的 数据类型转换 | 转为 字符串类型 方法 )

文章目录 一、 JavaScript 数据类型转换1、数据类型转换2、隐式转换 和 显式转换3、常用的 数据类型转换4、转为 字符串类型 方法 一、 JavaScript 数据类型转换 1、数据类型转换 在 网页端 使用 HTML 表单 和 浏览器输入框 prompt 函数 , 接收的数据 是 字符串类型 变量 , 该…

java拷贝数组

package com.mohuanan.exercise;public class Exercise {public static void main(String[] args) {int[] arr {1, 2, 3, 4, 5, 6, 7, 8, 8}; //格式化快捷键 CTRL 加 Alt 加 L键// F1截图 F3贴图//调用 copyOfRangeint[] ints copyOfRange(arr, 3, 7);for (int i 0; i &l…

【C++】string类初步介绍

个人主页 : zxctscl 如有转载请先通知 文章目录 1. 为什么学习string类1.1 C语言中的字符串1.2 推荐学习网站 2. 标准库中的string类2.1 string类2.2 string类的常用接口说明2.2.1 constructor2.2.2 遍历string2.2.2.1 下标加[]遍历2.2.2.2 迭代器(itera…

前端跨页面通信的几种方式---同源

参考链接 1、LocalStorage:当 LocalStorage 变化时,会触发storage事件。利用这个特性,我们可以在发送消息时,把消息写入到某个 LocalStorage 中;然后在各个页面内,通过监听storage事件即可收到通知。 2、BroadCast C…

快速排序 刷题笔记

思路 分治双指针 在每个区间选定一个基准目标 两个指针从数组的两边向中间推进 使用 while循环判断 do {i;}while(q[i]<x); do{j--;}while(q[j]>x); 每次这样做完就会找到q[i]>x,,,,q[j]小于x 此时我们交换 q[i] ,q[j]于是小于x的数分到了小于x的一侧 大…

Java中 final、finally、finalize 有什么区别?

1、典型回答 final、finally、finalize 是 Java 中三个不同的关键字&#xff0c;它们除了长得像之外&#xff0c;其他的&#xff08;作用和含义&#xff09;完全不同。 它们三个的区别就好像&#xff1a;雷、雷锋、雷峰塔之间的区别。&#xff08;是三个完全不同的东西&#…

python实现卡普均值最小回路算法

如果给定一个含有环的有向图,要在这个图中找出所有的环并计算这些环的路径长度,然后除以环的边数,所得到的结果也就是环的平均值,这里也就是如何计算这个环的最小均值问题。 首先可以确定的是,如果图中均值最小的环的值是0,那么图中就不包含负环,由于是负环,那么所有边…

C库函数-getopt函数总结学习

1、简介 getopt函数是命令行参数解析函数 1、1命令行组成 Command name 程序文件名 operands 操作对象 option 选项 option argument 选项参数 getopt()函数将传递给mian()函数的argc,argv作为参数&#xff0c;同时接受字符串参数optstring – optstring是由选项Option字母组…

Linux系统目录结构详细介绍

目录 一、根目录&#xff08;/&#xff09; 二、/bin 三、/boot 四、/dev 1.设备文件类型&#xff1a; 2.常见设备文件&#xff1a; 五、/etc 六、/home 七、/root 八、/run 九、/sbin 十、 /tmp 十一、/usr 十二、/var Linux系统目录结构是一种层次化的文件系…

目标跟踪SORT算法原理浅析

SORT算法 Simple Online and Realtime Tracking(SORT)是一个非常简单、有效、实用的多目标跟踪算法。在SORT中&#xff0c;仅仅通过IOU来进行匹配虽然速度非常快&#xff0c;但是ID switch依然非常严重。 SORT最大特点是基于Faster RCNN的目标检测方法&#xff0c;并利用卡尔…

【阿里云系列】-基于云效构建部署Springboot项目到ACK

介绍 为了提高项目迭代的速度加速交付产品给客户&#xff0c;我们通常会选择CICD工具来减少人力投入产生的成本&#xff0c;开源的工具比如有成熟的Jenkins&#xff0c;但是本文讲的是阿里云提高的解决方案云效平台&#xff0c;通过配置流水线的形式实现项目的快速部署到服务器…