Simulink 和 DLL

Posted

技术标签:

【中文标题】Simulink 和 DLL【英文标题】:Simulink and DLLs 【发布时间】:2014-02-07 19:29:22 【问题描述】:

我需要将 .EXE 与 simulink 集成。我想做的是在 Simulink 中创建一个 C++ DLL。此 DLL 稍后应合并到 simulink 中的 S-Function 调用中。

信息流是:

    Simulink 执行 S-Function 模块 此块从 C++ DLL 调用方法 C++方法执行EXE,返回结果 结果一直返回到 simulink

ps:我没有EXE的源代码,它是一个黑盒子。这就是为什么我要创建一个 c++ 包装器以便从 simulink 执行它。

到目前为止,C++ DLL 包装器无法正常工作。代码如下。

#ifdef MATHFUNCSDLL_EXPORTS
#define MATHFUNCSDLL_API __declspec(dllexport) 
#else
#define MATHFUNCSDLL_API __declspec(dllimport) 
#endif

#ifdef __cplusplus /* If this is a C++ compiler, use C linkage */
extern "C" 
#endif

namespace MathFuncs

    // This class is exported from the MathFuncsDll.dll
    class MyMathFuncs
    
    public: 
        // Returns a + b
        static __declspec(dllexport)  double Add(double a, double b); 
    ;


#ifdef __cplusplus /* If this is a C++ compiler, end C linkage */

#endif

*.cpp

#include "stdafx.h"
#include <stdexcept>
#include "MathFuncsDll.h"
using namespace std;
namespace MathFuncs

    double MyMathFuncs::Add(double a, double b)
      return a + b;   

请注意,我使用 (extern "c") 命令来生成可用于 Matlab C 风格的 DLL。

当我尝试加载 DLL 时:

loadlibrary('myDLL', 'myDLL.h') libfunctions MathFuncsDll

“没有类 lib.MathFuncsDll 的方法或没有类 lib.MathFuncsDll。”

所以,我的问题是:

    我的 dll 项目有什么问题? 是否可以使用这种方法将 exe 与 simulink 集成?

obs:Similar question here

【问题讨论】:

除了c++错误:dll层的目的是什么?我会从 matlab 的函数(system-command)运行 exe。 嗯,有可能吗?我不知道。我会用谷歌搜索...无论如何,DLL 层将用于将 simulink 输入“转换”为 EXE 输入。例如,EXE 的所有输入都是文本文件。我必须在每个模拟步骤中创建新的文本文件 你为什么要把这个放在课堂上?这不会让你生活困难吗? 【参考方案1】:

给点建议:

你想要一个 2 级的 matlab 函数,在这里解释:http://www.mathworks.de/de/help/simulink/sfg/writing-level-2-matlab-s-functions.htmlmsfuntmpl_basic.m 模板开始。

您完全可以跳过 level 1 的功能,它们只是为了向后兼容而存在。

【讨论】:

【参考方案2】:

我不是在解决 dll 错误,而是您从 Simulink 运行 exe 的原始问题。

    为什么不像 Daniel 建议的那样使用 system 命令直接从 MATALB 代码运行 exe?

    如果你编写一个 C++ s-function,它的接口更容易实现,你可以从 C++ s-function 调用你的 exe。即,您将使用 C++ s-function 作为 Simulink 和您的 exe 之间的接口,而不是您的 DLL。

【讨论】:

以上是关于Simulink 和 DLL的主要内容,如果未能解决你的问题,请参考以下文章

Simulink 和 DLL

Simulink - 电器和消费

simulink模块参数不能设置

平稳随机模拟信号在simulink库中是哪个

[原创]Simulink动态封装子系统(1):如何创建自己的Simulink模块

有大牛知道下面两个是simulink哪里的模块,找了好久找不到