我有以下问题: 在运行时,我加载了 Simulink 模型的 Matlab 生成的 DLL,其中包含模型的输出和输入的结构以及一些方法。
生成的结构和方法的示例(模型的名称是“Test_Scalar”):
typedef struct {
real_T Input_1; /* '<Root>/Input_1' */
real_T Input_2; /* '<Root>/Input_2' */
} ExtU_Test_Scalar_T;
/* External outputs (root outports fed by signals with default storage) */
typedef struct {
real_T Output; /* '<Root>/Output' */
} ExtY_Test_Scalar_T;
/* Real-time Model Data Structure */
struct tag_RTM_Test_Scalar_T {
const char_T * volatile errorStatus;
};
/* External inputs (root inport signals with default storage) */
extern ExtU_Test_Scalar_T Test_Scalar_*;
/* External outputs (root outports fed by signals with default storage) */
extern ExtY_Test_Scalar_T Test_Scalar_Y;
/* Model entry point functions */
extern void Test_Scalar_initialize(void);
extern void Test_Scalar_step(void);
extern void Test_Scalar_terminate(void);
在我的 C++ 程序中,我可以加载和执行 init 函数,还可以获得指向该结构的指针。但是,我不知道如何访问结构的成员。这里有人有想法吗?
int main() {
HMODULE hModule = LoadLibraryA("C:\\....\\Test_Scalar_win64.dll");
assert(hModule);
FARPROC initialize = GetProcAddress(hModule, "Test_Scalar_initialize");
assert(initialize);
initialize();
FARPROC inputs= GetProcAddress(hModule, "Test_Scalar_U");
assert(inputs);
//accessing members of input struct here
}
最好的问候
克里斯