结构体传入mwArray
转自:https://blog.csdn.net/yzl20092856/article/details/47271403
#include<iostream>
#include "MyAddLib.h"
using namespace std;
int main()
{
if(!MyAddLibInitialize())
{
return -1;
}
int a = 1;
int b = 2;
int c = 0;
struct myStruct
{//定义一个结构体
bool flg;
int x;
};
myStruct mys;//声明一个结构体变量
mys.flg = true;//变量赋值
mys.x=10;
const int nfields = 2;//结构体内的变量个数
const char *fieldnames[2]={"flg","x"};//结构体内的变量名称
mwArray mwStruct(1,1,nfields,fieldnames);//声明一个wmArray类型变量
/*
mwArray(mwSize num_rows,mwSize num_cols,int num_fields,const char**fieldnames)
创建行数为num_rows,列数为num_cols结构体阵列,结构体域名为由fieldnames指定,域名个数由num_fields指定
*/
mwArray mflg(mys.flg);//
mwStruct(fieldnames[0],1,1)=mflg;//给结构体内的变量赋值
mwArray mx(mys.x);
mwStruct(fieldnames[1],1,1)=mx;//给结构体内的变量赋值
mwArray mwA(1,1,mxINT32_CLASS);//int型
mwArray mwB(1,1,mxINT32_CLASS);
mwArray mwC(1,1,mxINT32_CLASS);
mwA.SetData(&a,1);
mwB.SetData(&b,1);
MyAdd(1,mwC,mwA,mwB,mwStruct);
c = mwC.Get(1,1);
cout<<c<<endl;
// lib Terminate
MyAddLibTerminate();
// MCR Terminate
mclTerminateApplication();
getchar();
return 1;
}
mwArray成员函数使用
int NumberOfDimensions 返回矩阵维数
int NumberOfElements 返回矩阵元素个数
mwArray GetDimensions 返回一维矩阵,表示矩阵各维大小
bool IsComplex 判断是否复数矩阵
PS:使用GetData前可先使用NumberOfElements确定元素个数,避免越界。
常见问题及解决办法、经验
C++通过动态链接库(.dll)调用matlab
https://jingyan.baidu.com/article/3f16e0031ded5d2591c103d6.html
QT调用MATLAB 生成的DLL经验分享
https://www.freesion.com/article/6060582134/
VS2015调用Matlab编译生成的DLL 编译环境设置 [吐血整理]
https://blog.csdn.net/weixin_41760829/article/details/79389685