0

我有以下问题: 在运行时,我加载了 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
}

最好的问候
克里斯

4

0 回答 0