我怎么能从mwArray提取MATLAB结构与细胞阵列在c++应用程序?

7视图(30天)
我已经创建了一个结构体数组的MATLAB函数,其中包含键值对数组和细胞数组值。
通过编译成一个c++共享库使用MATLAB编译器SDK,我能够负载在c++应用程序。数组存储为mwArray。
我怎样才能提取结构从这个mwArray c++,并将其存储在一个数据类型,c++是能读吗?

接受的答案

MathWorks支万博1manbetx持团队
这是一个循序渐进的例子,您可以参考编写c++代码来从mwArray提取输出结构。
步骤1:在MATLAB中创建一个函数返回1 x2结构
函数s = structSample ()
s =结构(“路径”,{{“c: \ tmp”,“c: \用户”},“d: \ app”},
“文件名”{{“foo.m”,“bar.m”,“hello.m”},
“test.exe”});
结束
第二步:编译为c++共享库函数通过使用MATLAB编译器SDK,或MCC命令
> > mcc - wcpplib: structSample = 1.0版本的- t链接:自由- d。structSample.m
一步3:调用编译c++库,从结构中提取数据
#包括“structSample.h”
intmain ()
{
const char * args [] = {“-nojvm”};
如果(!mclInitializeApplication (args, 1))
{
流(stderr,“初始化时发生一个错误:\ n % s”mclGetLastErrorMessage ());
返回1;
}
如果(! structSampleInitialize ()) {
流(stderr,“初始化时发生一个错误:\ n % s”mclGetLastErrorMessage ());
返回2;
}
/ /创建mwArray“sampleResult”来存储结果
mwArraysampleResult;
/ /调用共享图书馆,输出结构存储在“sampleResult”
sampleResult structSample(1日);
/ *提取数据从mwArray sampleResult * /
/ /得到细胞数组{“c: \ tmp”,“c: \用户”},然后提取“c: \ tmp”,最后转换为字符串
printf (“% s \ n”,(const char *) (sampleResult.Get (“路径”,1,1). get (1, 1) .ToString ()));
/ /得到细胞数组{“c: \ tmp”,“c: \用户”},然后提取“c: \用户”,最后转换为字符串
printf (“% s \ n”,(const char *) (sampleResult.Get (“路径”,1,1). get (1, 2) .ToString ()));
/ /获取字符d: \ app的数组,然后转换为字符串
printf (“% s \ n”,(const char *) (sampleResult.Get (“路径”,1,2).ToString ()));
返回0;
}
上面的c++代码的输出是:
c: \ tmp
c: \用户
d: \应用
你也可以参考mwArray以下文档:

更多的答案(0)

s manbetx 845


释放

R2020a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!