我需要将.EXE与simulink集成。我想做的是在Simulink中创建一个C ++ DLL。此DLL稍后应合并到simulink中的S-Function调用中。
信息流将是:
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时:
“类lib.MathFuncsDll没有方法,没有类lib.MathFuncsDll。”
所以,我的问题是:
答案 0 :(得分:1)
我没有解决dll错误,但是你从Simulink运行exe的原始问题。
为什么不使用像Daniel建议的system
命令直接从MATALB代码运行exe?
如果你编写一个C ++函数,它的界面更容易实现,你可以从C ++函数调用你的exe。即,您将使用C ++ s函数作为Simulink和您的exe之间的接口,而不是您的DLL。
答案 1 :(得分:1)
提供一些提示:
你想要一个2级matlab功能,在这里解释:http://www.mathworks.de/de/help/simulink/sfg/writing-level-2-matlab-s-functions.html
从msfuntmpl_basic.m
模板开始。
您可以完全跳过1级功能,它们仅用于向后分隔。