主要内容

使用C风格的包装器函数从C函数块调用c++类方法

这个例子展示了如何使用C Function块使用C风格的包装器函数调用c++类方法。对于一些c++类,例如模板类,C Function块不支持类对象的直接实例化或类方法的调用,因此需要使用C包装器函数。万博1manbetx看到使用C函数块与c++类交互.有关C函数块直接访问c++类成员和方法的示例,请参见直接从C函数块调用c++类方法

在本例中,c风格的包装器函数在中声明adder_wrapper.h并在adder_wrapper.cpp

要运行这个示例模型,您必须配置MATLAB®以使用c++编译器。可以使用墨西哥人设置命令,并选择c++编译器。

中指定头文件和源文件,以启用从C Function块调用C函数模拟目标面板中的模型配置参数对话框。在这个模型中,自定义代码头文件adder_template.h定义了一个加法器类模板以及类成员函数。头文件adder_wrapper.h包含在C函数块中调用的C风格包装器函数的声明。c风格包装器函数的原型是:

  • void * createAdder ()

  • void deleteAdder(void *obj)

  • int adderOutput(void *obj, int increment)

在哪里void * obj类对象的句柄和增量是加法器函数使用的输入。

createAdder函数中调用开始代码部分的C函数块对话框来构造一个对象加法器类。的deleteAdder函数中调用终止代码分段破坏了加法器类对象。在输出代码节,adderOutput函数被调用。在本例中,C Function块的端口配置如下:

  • 加法器类对象,obj,由createAdder函数,是持续的C函数块的符号。

  • C函数块的输入被映射到增量

  • 函数的返回值被映射到adderOutput函数。

另请参阅