我需要从Simulink模型生成一个带有输入和输出的共享库(.so)文件,并在另一个C ++项目中逐步运行该模型。
我知道MATLAB代码生成器能够生成可执行文件和DLL。但是,我找不到如何生成Linux C ++共享库。如果有人可以解释如何生成这些库,我将不胜感激,并提供了有关如何在C ++中导入和使用它们的最小工作示例。
修改
我设法在Qt Creator中创建了一个共享库和一个示例C ++项目。不知怎的,我错过了目标文件 ert_shrlib.tlc 。这就是我所做的:
配置Simulink模型
构建共享库
配置MWE Qt项目
test.pro
TEMPLATE = app
CONFIG += console
CONFIG -= qt
LIBS += -L<path_to_lib> -lsimul_main
INCLUDEPATH += <path_to_sources>
INCLUDEPATH += <path_to_matlab>/simulink/include/
SOURCES += main.cpp
的main.cpp
#include <cstdio>
extern "C"
{
#include "simul_main.h"
#include "simul_main_private.h"
}
int_T main()
{
/* Initialize the model */
init_simul();
real_T input1 = 1, input2 = 1;
real_T time;
real_T output1, output2;
real_T tfinal = 10;
while ((rtmGetErrorStatus(simul_main_M) == (NULL)) && !rtmGetStopRequested(simul_main_M))
{
/* Step the model for base rate */
step_simul(input1, input2, &output1, &output2);
/* Get simulation time */
time = rtmGetT(simul_main_M);
/* Display simulation output */
std::printf("%5.2f : [%5.2f, %5.2f]\n", time, output1, output2);
/* Request simulation to stop */
if (time >= tfinal)
rtmSetStopRequested(simul_main_M, true);
}
/* Terminate the model */
simul_main_terminate();
return 0;
}
请注意,可以在&#34;配置模型功能&#34;中配置step_simul
功能签名。对话。