Ok, I solved it. I forgot to change platform from x32 to x64 and run the code with administrator privileges.
Calling Matlab from C++
1 view (last 30 days)
Show older comments
I have some data in 2d std::vector
for (int j=0; j<2; j++){
result.push_back(vector<double>());
for (int i=0; i<10; i++) result[j].push_back(i);
}
result is 2x10 matrix. I'd like to send result to matlab.
#include "engine.h"
#pragma comment( lib, "libmx.lib" )
#pragma comment( lib, "libmex.lib" )
#pragma comment( lib, "libeng.lib" )
int main(int argc, char** argv){
Engine *ep;
ep = engOpen(NULL);
int const SIZE=2;
int const SIZE2=10;
double x[SIZE][SIZE2];
mxArray *A=NULL;
A=mxCreateDoubleMatrix(SIZE2, SIZE, mxREAL);
memcpy((void *)mxGetPr(A), (void *)x, sizeof(double)*SIZE*SIZE2);
engPutVariable(ep, "Data", A);
engEvalString(ep, "newData = Something(Data)");
double *cresult;
mxArray *mresult;
mresult = engGetVariable(ep,"newData");
cresult = mxGetPr(mresult);
mxDestroyArray(A);
mxDestroyArray(mresult);
engClose(ep);
return 0;
}
I also add path to directories:
C:\Program Files\MATLAB\MATLAB Production Server\R2012
C:\Users\User\Documents\MATLAB
and libraries:
C:\Program Files\MATLAB\MATLAB Production Server\R2012b\extern\lib\win64\microsoft
But I have such error: " fatal error LNK1120: 8 unresolved externals ", when i try to build it.
2 Comments
Kaustubha Govind
on 5 Aug 2013
Artyom: You might want to post this as an answer and "accept" it, so that it is clear that this issue is resolved. Thanks!
Answers (1)
Wayne King
on 3 Aug 2013
If you want the results in the MATLAB workspace, why not create a MEX file with your C++ code?
See Also
Categories
Find more on Call MATLAB from C++ in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!