Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Simulink和DLL_C++_C_Matlab_Dll_Simulink - Fatal编程技术网

C++ Simulink和DLL

C++ Simulink和DLL,c++,c,matlab,dll,simulink,C++,C,Matlab,Dll,Simulink,我需要将.EXE与simulink集成。我想做的是在Simulink中创建一个C++ DLL。此DLL稍后应合并到simulink中的S函数调用中 信息流将是: Simulink执行S功能块 此块调用C++ DLL 的方法 C++方法执行exe,并返回结果< /LI> 结果可以追溯到simulink ps:我没有EXE的源代码,它是一个黑盒子。这就是为什么我要创建一个C++包装器,以便从Simulink中执行它。 到目前为止,C++ DLL包装器不工作。代码如下 #ifdef MATHFUNC

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

信息流将是:

  • Simulink执行S功能块
  • 此块调用C++ DLL
  • 的方法 C++方法执行exe,并返回结果< /LI>
  • 结果可以追溯到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

    #包括“stdafx.h”
    #包括
    #包括“mathfuncsdl.h”
    使用名称空间std;
    名称空间MathFuncs
    {
    double MyMathFuncs::Add(双a,双b)
    {返回a+b;}
    }
    
    请注意,我正在使用(extern“c”)命令来生成一个可以在MatlabC风格中使用的DLL

    当我尝试加载DLL时:

    • loadlibrary('myDLL','myDLL.h')
    • libfuncsdll函数
    “没有用于lib.mathfuncsdl类的方法或没有lib.mathfuncsdl类。”

    所以,我的问题是:

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

  • obs:

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

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

  • > p>如果你写了C++函数,它的接口就更容易实现,你可以从C++函数调用你的exe。即,代替DLL,你将使用C++ S-函数作为SIMULINK与EXE.

    之间的接口。 要给出一些提示:

    您需要一个2级matlab s函数,如下所述: 从
    msfuntmpl_basic.m
    模板开始


    您可以完全跳过级别1s函数,它们的存在只是为了向后比较system-command)运行exe。那么,有可能吗?我不知道。我将谷歌它。。。无论如何,DLL层将用于将simulink输入“转换”为EXE输入。例如,EXE的所有输入都是文本文件。我必须在每一个模拟步骤中创建新的文本文件,为什么要把它放在一个类中?这难道不让你的生活变得困难吗?
    #include "stdafx.h"
    #include <stdexcept>
    #include "MathFuncsDll.h"
    using namespace std;
    namespace MathFuncs
    {
        double MyMathFuncs::Add(double a, double b)
        {  return a + b;   }
    }