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 visualización (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Kaustubha Govind
el 5 de Ag. de 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!
Respuestas (1)
Wayne King
el 3 de Ag. de 2013
If you want the results in the MATLAB workspace, why not create a MEX file with your C++ code?
Ver también
Categorías
Más información sobre Call MATLAB from C++ en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!