C语言----隐藏代码文件

2023-05-16

        在C语言中,常用的文件主要是后缀为.c的源文件以及后缀名为.h的头文件。      

        我们通常使用头文件对函数进行声明,使用源文件对具体的函数进行实现。

        有些时候会由于各种原因需要将函数的功能交给别人使用,但是又不想将具体的代码内容展示给别人看,这是我们就可以使用VS的一项功能对代码进行加密。

一、将代码生成静态库

        代码内容仅作举例,加密方法均类似。

                1.创建文件

                        为了方便加密,仅创建存放函数声明的头文件和存放函数内容的源文件。

                       add.h

#pragma once

#include<stdio.h>

int Add(int x, int y);

                        add.c

#define _CRT_SECURE_NO_WARNINGS 1

#pragma warning(disable:6031)

#include "add.h"

int Add(int x, int y)
{
	return x + y;
}

                2.将文件转换为静态库

                将代码保存后,右键点击解决方案资源管理器中的项目名称,选择最下方的属性。

                若没有看到解决方案资源管理器,可点击上方的视图并选择解决方案资源管理器,或者使用Ctrl+W+S也可打开。

                在属性列表中点击配置类型右侧的下拉选项,将应用程序(.exe)更改为静态库(.lib)。

                 更改完之后关闭项目,这是我们就可以在项目中的Debug文件夹下看到一个后缀为.lib的静态库文件。

二、将静态库文件加载到新的项目中

        1.新建项目

        新建名为test的项目,建立test.c文件用来测试。

        2.添加文件

        为了保持代码不被泄露,我们需要复制静态库文件,为了实现静态库文件中,我们同时需要复制add.h用来声明函数。

        将头文件复制到测试项目下

         将静态库复制到test项目下的Debug文件夹中

         3.引用文件

                头文件add.h是我们自己编写的头文件,引用时需要使用双引号而非尖括号

#include "add.h"

                静态库文件的引用有多种方法。

                a.使用窗口的方式添加:

        右键点击项目名称,选择添加->现有项,在打开的窗口中找到test项目下的Debug文件夹,并选择静态库文件add.lib#include "add.h"

        

                 b.使用命令行的方式添加

                使用#pragma添加

#pragma comment(lib, "****\\test\\x64\\Debug\\add.lib")

                第一个参数lib表明引用的文件类型为静态库,第二个参数为文件的所在路径

                需要注意文件路径中应增加"\",防止被解读为转义字符

                4.效果测试

                这时我们就可以使用静态库文件进行函数功能的测试,同时也可通过头文件查看函数声明中的函数名以及所需要的参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言----隐藏代码文件 的相关文章

随机推荐

  • 电赛总结|电赛注意事项

    电赛总结 赛前 1 准备模块非常重要 如果没有提前准备模块 xff0c 在赛中也是在想尽办法买模块 xff0c 只是花更多的钱和运费等 xff0c 也不会去自己搭 所以赛前一定要准备模块 常见模块 降压模块 xff0c 升压稳压模块 xff
  • Putty使用教程

    Putty作为免费且开源的老牌 SSH 客户端 xff0c PuTTY 经常用于 Windows 下连接管理远程服务器 为方便刚接触 VPS 的新手参考使用 xff0c 本文配合截图介绍 PuTTY 的基础用法及一些设置技巧 xff0c 希
  • #Python实现话题的发布与订阅

    Python实现话题的发布与订阅 首先我们的先了解ROS文件系统的基本框架 xff0c 如下图所示 xff1a 由上图可知 xff0c py文件放在工作包里面的scripts文件夹内 xff0c 所以 xff0c 整活 xff01 1 在工
  • #创建自定义topic

    创建自定义topic 前面我们学了用C 43 43 和Python创建发布者与订阅者 xff0c 这次我们创建自定义的话题 xff0c 其实同C 43 43 实现topic差不多 xff0c 都是编写 cpp文件 步骤有点多且繁琐 xff0
  • #使用TF实现海龟机器人跟随

    使用TF实现海龟机器人跟随 昨天粗略地讲解了一会儿TF变换 xff0c 用的是ROS系统中自带的功能包实现小海龟跟随的功能 xff08 具体见 初识TF变换 xff09 今天我们将用自己编写节点的方式实现小海龟跟随的功能 xff0c 并且
  • #创建虚拟机器人URDF模型

    创建虚拟机器人URDF模型 题外话 xff1a 作业发布已有一两天了 xff0c 之所以今天才编辑这篇博客 xff0c 是因为我也遇到问题了 xff0c 现在以及解决了 xff08 小细节 xff1a 创建功能包之前先编译工作空间确保里面已
  • # gazebo 仿真

    gazebo 仿真 1 给 base link 添加惯性 xff0c 碰撞以及 gazebo 属性 在路径xqrobot description urdf xacro 件夹下新建 件夹 gazebo xff0c 并在 gazebo 件下创建
  • #Gmapping

    Gmapping 开始之前先安装两个功能包 xff0c 命令如下 xff1a sudo apt span class token operator span get install ros span class token operator
  • #navigation

    navigation 1 安装相关依赖 sudo apt span class token operator span get install ros span class token operator span kinetic span
  • # Qt_day1

    Qt day1 1 项目框架 span class token macro property span class token directive hash span span class token directive keyword i
  • ros先订阅后发布 无法收到消息的解决办法

    现象 今天遇到的问题是 使用的是Ros1 在先订阅后发布时 会导致订阅者无法收到订阅的消息 除非在发布者发布后重新订阅 思考 以前使用的是Ros2似乎并不关心订阅和发布的先后顺序 nbsp 似乎都可以收到消息 nbsp nbsp 这个问题后
  • C/C++中关于struct和class类的区别

    struct和class的主要的区别在于两者默认的访问权限有所不同 在不设置类中的成员属性和成员方法的权限时 xff0c struct默认的访问权限是公共权限 xff0c class默认的访问权限是私有权限 补充 xff1a 成员属性和成员
  • C++中STL容器的主要使用及含义

    1 stack栈容器的使用 假如栈中存放的是字符串 xff0c 我们做如下定义 xff1a stack lt string gt ss 设该变量名为ss 其主要用法如下 xff1a ss push a 存入栈中元素a ss top 读取栈顶
  • 电赛备赛记录第一篇(控制部分)

    2022 5 25 九校联赛备赛阶段第一天 联赛小车系统沿用去年国赛使用的树莓派驱动底板与外设 整车情况良好 xff0c 摄像头通信 连接均正常 xff0c 现已拼装完整 复产复工的初步成果为 xff1a 小车可以实现开机自启动的程序运行
  • 数据结构——栈详解

    1 栈 Stack 是一种线性存储结构 xff0c 它具有如下特点 xff1a xff08 1 xff09 栈中的数据元素遵守 先进后出 34 First In Last Out 的原则 xff0c 简称FILO结构 xff08 后进先出的
  • 双目相机标定

    一 运行环境 opencv2 windows vs 二 图像获取 分割 保存 参考博客opencv打开双目摄像头 图像切割保存 scutqq的博客 CSDN博客 双目图像分割 include amp lt opencv2 core core
  • uart1接收不定长度数据和发送:STM32 HAL库串口+DMA+IDLE空闲中断

    DMA增加 xff1a usart1 gpio 默认即可 usart1中断必须打开 在 STM32 中 USART 发送接收有三种基本方式 xff0c 轮询 中断和 DMA 1 轮询方式为堵塞模式 xff0c 使用超时管理机制 它每次接收一
  • 串口、网口等自定义通信协议的问题

    自定义通信协议的问题 一 串口1 通信分为网络通信和串口通信2 协议格式3 协议设计4 代码实现 二 网口1 TCP粘包与拆包 包的划分 出现TCP粘包的原因 粘包与拆包的几种情况 常见的粘包与拆包解决方案 2 为什么UDP没有粘包 xff
  • 如何理解奇偶校验位?

    奇偶校验位提供对传输数据的简单错误 xff08 奇偶校验 xff09 检查 此表描述奇偶校验的类型 奇偶校验类型 xff1a Even 描述 xff1a 数据位加上奇偶校验位产生偶数个1 xfffc 奇偶校验类型 xff1a Mark 描述
  • C语言----隐藏代码文件

    在C语言中 xff0c 常用的文件主要是后缀为 c的源文件以及后缀名为 h的头文件 我们通常使用头文件对函数进行声明 xff0c 使用源文件对具体的函数进行实现 有些时候会由于各种原因需要将函数的功能交给别人使用 xff0c 但是又不想将具