- MATLAB版本:R2018b
- Visual Studio版本:2017
- 操作系统:Windows 10
-
在菜单栏依次打开
Code
>C/C++ Code
>Code Generation Options
,并选中Code Generation
选项卡: -
右侧面板
Target Selection
里面,选择System target file
为ert.tlc Create Visual C/C++ Solution File for Embedded Coder
,如图: 这里两个ert.tlc,区别在于第一个会直接生成C++的h、cpp源文件,并编译成exe,不会生成VS工程。不过其源代码也很方便就可以嵌入到其他工程或者生成动态库了。 第二个不仅会生成C++的h文件和cpp文件,还会生成VS工程,所以我们可以直接用VS打开了,便于后面的修改和编译! -
可选:在
Code Generation
的Interface
子选项卡里面,右侧面板Code Interface
里面,点击Configuration C++ Class Interface
,打开如下页面修改步长函数接口和类名:
Ctrl+B
执行构建,生成VS工程。工程生成结束后,Visual Studio 2017会自动打开VS工程。如图:
-
在VS IDE里面打开Model.h文件,定位到48行,并修改为下图: 后面我们会在该工程添加
MODEL_LIBRARY
宏定义,所以54行就会展开为class __declspec(dllexport) MyModel
(49行是灰的,是因为这里还没有定义MODEL_LIBRARY宏),也就是将MyModel类符号导出,作为动态库供其他程序使用。 -
打开MyModel工程的属性页,依次执行一下操作:
-
对该动态库的调用按照标准C++编译链接步骤即可,代码调用示例如下:
MyModel model; model.initialize; model.rtU.In1 = 100; model.update(); std::cout << model.rtY.Out1; model.terminate();
Matlab生成的VS工程默认只有一个Debug版本,所以我们需要在工程属性页修改编译选项,以适应自己项目实际的Debug或者Release情况,解决运行速度与编译报错等问题。
通常我们需要修改这些地方:
- C/C++ > 常规 > 优化
- C/C++ > 常规 > 预处理器 > 预处理器宏定义
- 链接器 > 调试 > 生成调试信息
- 链接器 > 优化 > 链接时间代码生成