汽车网站cms,wordpress+社区,广州建设职业培训学校,wordpress文章默认经典在调试DSP设备的时候#xff0c;发现好多工程会把比较核心的代码生成静态库lib#xff0c;代码运行的时候直接调用lib里面的相关函数就行。但是从外部是看不到lib库里面的内容的#xff0c;这样通过静态库的方式实现对代码的加密。 在网上找了好久如何将函数生成静态库*.lib… 在调试DSP设备的时候发现好多工程会把比较核心的代码生成静态库lib代码运行的时候直接调用lib里面的相关函数就行。但是从外部是看不到lib库里面的内容的这样通过静态库的方式实现对代码的加密。 在网上找了好久如何将函数生成静态库*.lib的方法找到的资料都比较零散看起来比较费劲通过自己的摸索终于验证成功了。下面将我的方法分享一下。 下面用到的相关工程全部已打包上传 https://download.csdn.net/download/qq_20222919/88583858 首先调试好需要生成lib库文件的工程这里使用一个流水灯来演示。 main函数中调用流水灯函数实现LED灯的各种显示效果。 leds.c文件中主要对LED灯使用到的端口进行初始化。 led_control.c文件中通过三个函数实现三种流水灯的效果。 在这个工程中需要将流水灯的控制方式打包也就是要将led_control.c这个文件打包为lib库文件。 首先调试当前工程确保函数功能都能正确执行。 下载运行观察流水灯的现象确保函数功能都正常。 接下来开始将led_control.c文件生成为库文件。 首先要新建一个工程,新建工程时注意单片机型号的选择。 在Advanced settings选项中将output type类型选为Static Library。 然后点击Finish按钮创建新的工程。 新工程创建完成后删除默认的main.c文件。 然后进入到当前工程文件夹中将上一个工程中的led_control.c文件拷贝到当前工程文件夹中。 拷贝完成后工程中就会自动出现led_control.c文件。 接下来还需要添加工程中需要的头文件在工程上单击鼠标右键选择Properties 然后在Include Options依次添加需要用到的头文件。 这里主要添加官方库中的头文件 最后还需要将上一个工程中leds这个文件夹路添加进来因为需要生成lib库文件的这个led_control.c还需要依赖leds文件夹中的其他几个文件。 所以当前项目中就不需要再添加leds.h和led_control.h头文件了直接引用上一个项目的文件路径就行。 添加完成之后编译工程工程编译完成之后在Debug文件夹中就会出现生成generate_led_lib.lib 文件。 接下来在新的工程中就可以直接调用这个 lib文件了。 在ccs中直接复制一个刚才的流水灯工程 名字修改为call_led_lib 使用这个工程来调用刚才生成的lib库在工程中直接删除led_control.c文件。 然后打开工程文件夹将generate_led_lib工程中Debug文件夹里面生成的generate_led_lib.lib文件 复制到call_led_lib工程中的APP—leds文件夹中 相当于使用generate_led_lib.lib文件来代替刚才led_control.c文件的功能。 此时工程中就会自动将generate_led_lib.lib文件添加进去。 下来编译当前工程 工程编译成功没有出现错误说明刚才使用generate_led_lib.lib文件来代替led_control.c是成功的。 下载到单片机中执行观察led闪烁现象效果和waterfall_light工程执行的效果是一样的。 在工程中按住ctrl键单击display1、display2、display3这三个函数发现这三个函数不能跳转。说明generate_led_lib.lib文件已经成功的将这个三个函数封装起来了只能调用不能看到函数实现的具体过程。 这样通过静态库的方法就可以对项目中的核心技术进行软件层面的加密。