本文共 1599 字,大约阅读时间需要 5 分钟。
在 MATLAB 中启用 C 编译器,进入 MATLAB 的命令窗口,依次执行以下命令:
启用 C++ 编译器:
mex -setup C++
选择 C++
选项。
配置 mbuild:
mbuild -setup C++ -client MBUILD
选择 C++ -client MBUILD
选项。
例如,编写 ZSLAdd.m
,实现两个数相加的功能:
function [a, b] = ZSLAdd(Z, X, Y) a = Z + X; b = Y + Z;end
在 MATLAB 命令窗口中执行以下命令,将 MATLAB 函数编译为 C++:
mcc -W cpplib:ZSLAdd -T link:lib ZSLAdd.m -C
生成的文件包括:.lib
, .h
, .dll
, .ctf
,将这些文件添加到 C++ 项目中。
CallMatlab3
。*.lib
, *.h
, *.dll
, *.ctf
文件添加到项目目录 E:\C++Program\CallMatlab3\CallMatlab3
中。D:\Matlab2016\extern\include
D:\Matlab2016\extern\lib\win64\microsoft
在 链接器→输入 中,添加依赖项 libloader.dll
和 mexC.dll
。
x64
调试模式。x64
。在 C++ 文件中加入以下代码,调用 MATLAB 函数:
// 包含必要的头文件#include "stdafx.h"#include#include "mclmcr.h"#include "matrix.h"#include "ZSLAdd.h"// 初始化int _tmain(int argc, _TCHAR* argv[]) { if (!ZSLAddInitialize()) { cout << "Could not initialize ZSLAdd!" << endl; exit(0); } // 初始化输入数据 mwArray x(1, 1, mxDOUBLE_CLASS); mwArray y(1, 1, mxDOUBLE_CLASS); x(1, 1) = 20; y(1, 1) = 30; // 调用 MATLAB 函数 mwArray a(1, 1, mxDOUBLE_CLASS); mwArray b(1, 1, mxDOUBLE_CLASS); ZSLAdd(2, a, b, x, y); // 输出结果 cout << "a = " << a << " b = " << b << endl; system("pause"); return 0;}
生成所有相关项目
。通过以上步骤,您可以成功在 C++ 程序中调用 MATLAB 函数,实现跨语言开发。
转载地址:http://orrfk.baihongyu.com/