C++调用二维数组问题,急急急,mwArray

#include "iostream.h" // 输入输出头文件
#include "mclmcrrt.h"
#include "mclmcr.h" // mwArray 类型声明
#include "libdata1.h" // DLL 头文件
#include "libdata.h"
void display(const double* data, const int r, const int c, const char* name);
int main()
{
// 初始化程序
if( ! mclInitializeApplication(NULL,0) )
{
fprintf(stderr, "Could not initialize the application.\n");
exit(1);
}
// 初始化库
if (! libdata1Initialize() )
{
fprintf(stderr,"Could not initialize the library.\n");
exit(1);
}
if (! libdataInitialize() )
{
fprintf(stderr,"Could not initialize the library.\n");
exit(1);
}
// 声明 DLL 函数输入输出 mwArray 对象
double x[2][2] = {{1,2},{3,4}};
double y[2][2] = {{2,3},{4,5}};
double z[2][2] = {{4,5},{6,6}};
double result[2][2];
mwArray X(2,2,mxDOUBLE_CLASS);
mwArray Y(2,2,mxDOUBLE_CLASS);
mwArray Z(2,2,mxDOUBLE_CLASS);
mwArray RESULT;
// 给输入 mwArray 对象赋值
X.SetData(*x,2);
Y.SetData(*y,2);
Z.SetData(*z,2);
// 调用 DLL 函数
data(1,RESULT,x,y,z);//就是x+y用data1算出和,然后加上z就是data1
// 取出输出数据
RESULT.GetData(*result,2);
// 显示 mwArray 对象
display(*x,2,2,"x");//以下四句是另一种方法,和上面四句错开用
//display(*y,2,2,"y");
//display(*z,2,2,"z");
//display(*result,2,2,"result");
//delete *result;
// 关闭库和程序
libdataTerminate() ;
libdata1Terminate() ;
mclTerminateApplication();
return 0;
}
提示x,y,z不满足格式
--------------------Configuration: TEST2 - Win32 Debug--------------------
Compiling...
TEST2.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\TEST2\TEST2.cpp(40) : error C2664: 'data' : cannot convert parameter 3 from 'double [2][2]' to 'const class mwArray &'
Reason: cannot convert from 'double [2][2]' to 'const class mwArray'
No constructor could take the source type, or constructor overload resolution was ambiguous
Error executing cl.exe.

TEST2.obj - 1 error(s), 0 warning(s)

double x[4] = {1,2,3,4};
double y[4] = {2,3,4,5};
double z[4] = {4,5,6,6};
然后传的时候用数组名就行了,因为数组名就是double *.
X.SetData(x,4);
Y.SetData(y,4);
Z.SetData(z,4);
祝楼主好运!
温馨提示:内容为网友见解,仅供参考
无其他回答

C++调用二维数组问题,急急急,mwArray
double x[4] = {1,2,3,4};double y[4] = {2,3,4,5};double z[4] = {4,5,6,6};然后传的时候用数组名就行了,因为数组名就是double *.X.SetData(x,4);Y.SetData(y,4);Z.SetData(z,4);祝楼主好运!

mwarray结构体:紧急求助:如何在VC+中使用MATLAB
mwArray:Matlab C++ 函数库中对mxArray的包装类 其次,二者的内存管理方式不同。mxArray的内存管理方式比较松散,由于是C函数库,没有数据封装,必须对临时阵列和约束阵列的概念极为明确,并且须小心地防止内存泄漏(要多写好多代码)。尽管有自动内存管理机制(mlfEnterNewContext,mlfReleasePreviousContext...

linux c++ 怎么 调用自己函数的
extern LIB_libmyFunc_CPP_API void MW_CALL_CONV myFunc(int nargout, mwArray& C, const mwArray& A, const mwArray& B);这 个就是我们的myFunc.c函数待会儿在c++中调用时的接口。有4个参数,第一个是参数个数,第二个是用来接收函数返回值的,后面2个是从c++中传 递进来的变量。我们还会...

相似回答