我在使用ST Visual Develop开发STM8S207MBT6时需要提供一个静态库(例如MDK中创建的.lib库文件)给客户调取接口使用,但是我并不想客户查看函数调取接口的具体源码,请问该如何操作呢? STM 55 |
STM32H743对关键中断函数,使用ITCM搬至RAM运行,仿真进入HardFault_Handler报错
stm32u545 boot
IAR无法跳转定义,系统库文件文件名后有[RO]
stm32g431rbt怎么显示汉字
STM32F407IGT6烧录异常
使用STM32F103控制两步进电机同时进行不同的运动(软件指令驱动),与控制一个电机的不同之处在于哪里?
STM32使用STLINK烧录问题上电顺序问题
STM32H7B0 CAN发送异常
STM32H7系列芯片下的ECC功能如何测试?
H750/743 VREFBUF配置问题
这样不需要.C 文件,将.O 文件导入工程中即可正常编译使用,从而隐藏了源代码。
楼主可以试试看行不行~~
感谢您的回复,
首先关于制作.lib静态库文件,我这里进行了尝试可以编译生成,将下面这段命令行复制到Project Settings->Post-Build->Commands中:(其中的example为你需要制作的文件名且必须为小写)
clib -c $(OutputPath)example.lib $(OutputPath)example.o
但是生成的lib文件仅能在自身工程中链接使用,发送给客户,添加到客户的工程中使用时,会报错:函数未被定义。
而与之同理的使用.o文件,也是仅能在本工程使用,移植到客户工程进行链接时同样报错,报错与上述.lib一致未找到定义。
我不知道为什么生成的.lib静态库文件并不像其他MDK或iar生成的库一样具备相等的可移植性,或者是操作哪里不对,
或许编译的库跟工程内stm8_interrupt_vector.c等文件差异导致不同工程间无法通用(因为我是新建一个空工程仅添加一个.c和.h生成的单一lib文件,新建工程时默认产生main.c和stm8_interrupt_vector.c文件),
也可能是Cosmic编译器的差异引起的(虽然我尝试更换为客户使用的Cosmic编译器,但问题依然存在)
如果你有兴趣,可以尝试验证一下。