加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VS2015C++调用MATLAB2018b生成的dll并输出结构体

(2018-11-08 16:37:28)
标签:

vs2010/mfc

vs2015

matlab

分类: Matlab/VS
1、输入字符串,输出字符串
m文件内容
function imginfo  = dllTest2(MInterface)
%UNTITLED 此处显示有关此函数的摘要
%   此处显示详细说明
imginfo = MInterface;
end
调用程序:
mclmcrInitialize();
const char* args[] = { "-nojvm" };
const int count = sizeof(args) / sizeof(args[0]);
if (!mclInitializeApplication(args, count))
{
return;
}
if (!dllTest2Initialize())
{
return;
}
mwArray nwOut;
string pImg = "O3543.jpg";
mwArray mImg(pImg.data());
dllTest2(1, nwOut, mImg);
string aa;
aa = nwOut.ToString();
dllTest2Terminate();//终止调用
mclTerminateApplication();// terminate MCR
2、输入结构体,输出结构体
m文件:
function imginfo  = dllTest3(MInterface,ImgPath)
%UNTITLED 此处显示有关此函数的摘要
%   此处显示详细说明
CropID=MInterface.CropID;
PeriodID=MInterface.PeriodID;
imginfo.name = CropID;
imginfo.imageResolution = '3000,2000';
imginfo.stageflag = PeriodID;
end
调用程序:
mclmcrInitialize();
const char* args[] = { "-nojvm" };
const int count = sizeof(args) / sizeof(args[0]);
if (!mclInitializeApplication(args, count))
{
return ;
}
if (!dllTest3Initialize())
{
return;
}
struct MyStruct//声明结构体
{
string pStationID;
string pCropID;
};

MyStruct mys;
mys.pStationID = "012345";
mys.pCropID = "123";

//声明wmArray结构体矩阵
const int nFiields = 2;//结构体内的变量个数
const char* fieldnames[2] = { "CropID","PeriodID"};//结构体内的变量名称(变量名需与m文件的变量名一致)
mwArray nwStruct(1, 1, nFiields, fieldnames);//声明一个wmArray类型变量
//wmArray赋值
mwArray mStationID(mys.pStationID.data());
nwStruct(fieldnames[0], 1, 1) = mStationID;
mwArray mCropID(mys.pStationID.data());
nwStruct(fieldnames[1], 1, 1) = mCropID;

string pImg = "O3543.jpg";
mwArray mImg(pImg.data());
//输出mwArray 结构体矩阵
const int nOutFields = 3;
const char* Outfieldnames[3] = { "name","stageflag","imageResolution" };
mwArray nwOut(1, 1, nOutFields, Outfieldnames);

dllTest3(1, nwOut, nwStruct, mImg);//执行dll

for (int i = 0; i < 16;i++)//读取矩阵数据
{
mwArray ww = nwOut(Outfieldnames[i], 1, 1);
string r;
r = ww.ToString();
}
dllTest3Terminate();//终止调用
mclTerminateApplication();// terminate MCR

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有