问题描述
我们有一个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 (将#修改为@)