请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STVD如何生成库文件

[复制链接]
lilililihao 提问时间:2023-10-27 21:45 / 未解决

我在使用ST Visual Develop开发STM8S207MBT6时需要提供一个静态库(例如MDK中创建的.lib库文件)给客户调取接口使用,但是我并不想客户查看函数调取接口的具体源码,请问该如何操作呢?

STM

55

收藏 评论3 发布时间:2023-10-27 21:45

举报

3个回答
STMCU-管管 回答时间:2023-10-30 08:37:54
你试试用ST Visual Develop或其他支持STM8S207MBT6的开发环境,创建一个静态库项目。将你想要隐藏的函数实现放在静态库的源文件中,并将其编译为静态库。确保将所有其他的源文件和功能都包含在静态库中。
butterflyspring 回答时间:2023-10-30 15:40:59
可以利用 .O 文件来实现你的想法。STVD编译后会生成相应的.O 文件。

这样不需要.C 文件,将.O 文件导入工程中即可正常编译使用,从而隐藏了源代码。
楼主可以试试看行不行~~

Stvd o file for compiler.PNG Stvd o file for compiler 2.PNG

lilililihao 回答时间:2023-10-31 21:16:55

butterflyspring 发表于 2023-10-30 15:40
可以利用 .O 文件来实现你的想法。STVD编译后会生成相应的.O 文件。</p>
<p>这样不需要.C 文件,将.O 文件导入工 ...

感谢您的回复,

首先关于制作.lib静态库文件,我这里进行了尝试可以编译生成,将下面这段命令行复制到Project Settings->Post-Build->Commands中:(其中的example为你需要制作的文件名且必须为小写)

clib -c $(OutputPath)example.lib $(OutputPath)example.o image.png

但是生成的lib文件仅能在自身工程中链接使用,发送给客户,添加到客户的工程中使用时,会报错:函数未被定义。

image.png

image.png

而与之同理的使用.o文件,也是仅能在本工程使用,移植到客户工程进行链接时同样报错,报错与上述.lib一致未找到定义。

image.png

我不知道为什么生成的.lib静态库文件并不像其他MDK或iar生成的库一样具备相等的可移植性,或者是操作哪里不对,

或许编译的库跟工程内stm8_interrupt_vector.c等文件差异导致不同工程间无法通用(因为我是新建一个空工程仅添加一个.c和.h生成的单一lib文件,新建工程时默认产生main.c和stm8_interrupt_vector.c文件),

也可能是Cosmic编译器的差异引起的(虽然我尝试更换为客户使用的Cosmic编译器,但问题依然存在)

如果你有兴趣,可以尝试验证一下。

image.png
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版