【问题标题】:Using of two Simulink/MATLAB static libraries使用两个 Simulink/MATLAB 静态库
【发布时间】:2013-09-08 23:37:47
【问题描述】:

我有一个使用两个 static 库的 C 应用程序。这些库的源代码由 Simulink/MATLAB 生成和构建。
问题是 Simulink 为每个模型的文件 MyModel.c 生成 extern non-static 函数
real_T rt_urand_Upu32_Yd_f_pw(uint32_T *u) for block "Uniform Random Number"。当我在我的 C 应用程序中包含这些库时,我得到了函数重新定义的链接器错误。

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

【问题讨论】:

  • 你用什么来生成代码? Simulink 编码器?嵌入式编码器?什么目标?
  • 你在使用模型引用吗?
  • 我正在使用 Simulink Coder 和自己的基于 grt.tlc(通用实时目标)的目标
  • 关于模型引用..我的模型没有任何子模型..
  • 我已将属性“每个顶级模型允许的实例总数”更改为零,但问题仍然存在...

标签: c matlab code-generation static-linking simulink


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多