我需要將.EXE與simulink集成。我試圖做的是在Simulink中創建一個C++ DLL。這個DLL稍後應該被包含在simulink中的S函數調用中。Simulink和DLL
信息流將是:
- Simulink中執行S-功能塊
- 此塊調用從C++ DLL的方法
- 的C++方法執行EXE,並返回我的結果
- 結果去所有的方式回到SIMULINK
PS:我沒有這個EXE文件的源代碼,這是一個BL ack框。這就是爲什麼我要創建一個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; }
}
,爲了生成可以在Matlab空調風格一起使用的DLL使用(外部的 「C」)命令I'm請注意。
當我嘗試加載DLL:
- 調用LoadLibrary( 'MYDLL', 'myDLL.h')
- libfunctions MathFuncsDll
「類lib.MathFuncsDll或否方法沒有類lib.MathFuncsDll「。
所以,我的問題是:
- 請告訴我錯了我的dll項目?
- 使用這種方法可以將exe與simulink集成嗎?
除了C++錯誤:什麼是dll層的目的?我會從matlab的函數('system'-command)運行exe。 – Daniel
嗯,有可能嗎?我不知道。我會谷歌它......無論如何,DLL層將被用於「翻譯」simulink輸入到EXE輸入。例如,EXE的所有輸入都是文本文件。我將不得不在每個模擬步驟中創建新的文本文件 – guilhermecgs
爲什麼要把它放在課堂上?這不會讓你難過嗎? –