如何从.NET Core调用Simulink共享库

问题描述

我们有一个Simulink模型,并使用Embedded Coder(.dll&.so)从中生成了一个共享库。 我可以毫无问题地从库中整理model_initialize()model_step()函数。

但是,在dll中也定义了如下结构:

typedef struct {
  real_T A;
  real_T B;
  real_T C;
} ExtU_model_T;


extern ExtU_model_T model4_U;

由于不能将DllImport()属性与变量一起使用,而只能与方法一起使用,我想知道如何在C代码中访问这些结构?该模型将它们用作某种全局变量,我无法在函数内传递它们,因为函数内的代码不是以这种方式生成的。我也不想更改C代码,而只是按原样使用生成的DLL,以进行维护。

我碰到了this old forum,几天前刚好在底部有人遇到了same question,他也比我进步了很多。唯一的问题是,他使用的kernel32.dll是afaik,仅在Windows系统上可用,但是我们使用.NET Core,并且我们的服务器是基于UNIX的,因此这是没有选择的。

从部署到PLC的脚本中使用相同的代码,这是该模型的使用方式的片段:

    optimizationModel4_initialize();
    model4_U.A = a;
    model4_U.B = b;
    model4_U.C = c

其中model4_U是一个全局结构,除了在生成的代码中没有定义。

TL; DR

如何在带有C#的跨平台.NET核心系统中使用Simulink生成的共享库?或者如何在带有C#的跨平台.NET核心系统中使用这些全局结构?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...