gpt4 book ai didi

c++ - Simulink 和 DLL

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:34 24 4
gpt4 key购买 nike

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

信息流将是:

  1. Simulink 执行 S-Function 模块
  2. 这个 block 从 C++ DLL 调用一个方法
  3. C++方法执行EXE,返回结果
  4. 结果一路回到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。”

所以,我的问题是:

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

观测值:Similar question here

最佳答案

给一些提示:

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

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

关于c++ - Simulink 和 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21636208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com