首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Simulink和DLL

Simulink和DLL
EN

Stack Overflow用户
提问于 2014-02-07 19:29:22
回答 1查看 2.9K关注 0票数 1

我需要集成一个.EXE与simulink。我试着在Simulink中创建一个C++动态链接库。这个DLL以后应该合并到simulink中的S函数调用中.

信息流动将是:

  1. Simulink执行S-函数块
  2. 此块从C++ DLL调用一个方法。
  3. C++方法执行EXE,并返回结果
  4. 结果可以追溯到simulink

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

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

代码语言:javascript
复制
#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

代码语言:javascript
复制
#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")命令,以生成一个DLL,可以使用Matlab C风格。

当我试图加载DLL时:

  • 加载库(“myDLL”,“myDLL.h”)
  • libfunctions

“没有用于类lib.MathFuncsDll的方法,也没有类lib.MathFuncsDll。”

所以,我的问题是:

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

obs:类似的问题

EN

回答 1

Stack Overflow用户

发布于 2014-02-07 22:01:14

我不是解决dll错误,但您原来的问题,运行的执行从Simulink。

  1. 为什么不像丹尼尔建议的那样使用system命令直接从MATALB代码中运行exe呢?
  2. 如果您编写了一个C++ s-函数,它的接口更容易实现,并且可以从C++ s-函数调用您的exe。也就是说,您将使用C++ s函数作为Simulink与您的exe之间的接口,而不是DLL。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21636208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档