我的C应用程序使用了两个静态库。这些库的源代码由Simulink / MATLAB生成和构建
问题是Simulink生成 extern非静态功能
real_T rt_urand_Upu32_Yd_f_pw(uint32_T *u)
用于块“统一随机数”到每个模型的MyModel.c文件中。当我在我的C应用程序中包含这些库时,我遇到了函数重定义的链接器错误。
有没有办法在Simulink中更改代码生成过程?
答案 0 :(得分:2)
我理解你的问题:你的2个库是从两个使用这个块的Simulink模型生成的,所以显然Simulink Coder不知道你想要同时使用它们而只是生成相同的功能两次。
如果可以只有1个库而不是2个,那么这里有一些建议。
<强>提案:强> 将两个模型作为模型参考放在一个顶部模型中。生成代码。 Simulink Coder意识到该块在两个模型中都使用,并且仅生成一次该函数。
<强> Proposal2:强> 将具有Function包装的子系统中的Uniform Random Number块包装到单独的C文件中。将生成的两个模型的源文件一起编译,删除您单独生成的C文件的一个副本。