【发布时间】:2020-11-09 06:42:23
【问题描述】:
我有一个 Modelica 外部 C 函数,它调用 .dll 中的函数。
在 .dll 的 C 函数中,我想使用 ModelicaError() 函数。然而当 #include ModelicaUtilities.h 包含许多错误。
这样做的正确方法是什么? 我认为我需要链接到现有的 Dymola .lib,哪个? DYMOLA_STATIC 应该定义为什么? 或者我应该以这样一种方式编译 .dll,以便在使用模型编译后这些缺失的函数可用?
任何对此的见解都会很棒,谢谢
【问题讨论】:
-
包含 ModelicaUtilities.h 后会出现什么错误?在到达链接阶段之前,您应该不会收到任何错误
-
如果我没有定义 DYMOLA_STATIC 那么会有一长串错误。如果我将它设置为 DYNMOLA_STATIC 为:#define DYNMOLA_STATIC 那么我得到的东西可以通过包含 dsutil.h 来解决。但是,这会引入更多错误,这些错误可以通过包含 dsblock.h 来解决,这会引入更多我无法解决的错误。但是基本上我觉得我做的不对。
-
ModelicaUtilities.h 仅包含 ModelicaError 的原型。我猜设置:#define DYNMOLA_STATIC extern 是一个好的开始,但是在尝试编译 dll 时仍然会产生错误,因为找不到 ModelicaError 函数。
-
如果生成 .lib,您只需在生成 dll 时设置 #define DYNMOLA_STATIC extern 和 #include ModelicaUtilities.h 这不起作用。
-
这篇文章很好地解释了这种情况:stackoverflow.com/questions/34174951/… 所以你需要提供指向 ModelicaError 函数的指针。