3

我有使用两个静态库的 C 应用程序。这些库的源代码由 Simulink/MATLAB 生成和构建。
问题是 Simulink为每个模型生成块“统一随机数”的外部非静态函数到文件 MyModel.c 中。
real_T rt_urand_Upu32_Yd_f_pw(uint32_T *u)当我在我的 C 应用程序中包含这些库时,我得到了函数重新定义的链接器错误。

有没有办法改变 Simulink 中的代码生成过程?

4

1 回答 1

2

据我了解,您的问题是:您的 2 个库是从 2 个都使用此模块的不同 Simulink 模型生成的,因此显然 Simulink Coder 无法知道您要同时使用它们并且只生成两次相同的函数。

如果您可以只拥有 1 个库而不是 2 个库,那么这里有一些建议。

建议: 将两个模型作为模型参考放在一个顶级模型中。生成代码。Simulink Coder 意识到该模块在两个模型中都使用,并且只生成一次函数。

建议 2: 将 Uniform Random Number 模块包装在一个子系统中,并将 Function 打包到一个单独的 C 文件中。将生成的两个模型的源文件一起编译,删除您单独生成的 C 文件的副本之一。

函数封装参数

于 2013-09-05T15:02:09.857 回答