Howaida Khoureieh
Howaida Khoureieh

Reputation: 559

Calling Cpp Project From Matlab

We Have a project called FaceTracker that is written in cpp, and we need to call it from another project written in matlab. we`ve succeeded to call a single function from matlab using "mex" and "mexfunction" (that is written in c). When we tried to call the full project, we added the following source file:

#include "mex.h"
#include "FaceTracker.h"

void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
... // code
/* Call the "main" C++ subroutine. */
FaceTracker( buflen, input_buf);
}

and tried to compile it in matlab by typing: "mex mexFile.cpp" But we got the following errors:

`lcc preprocessor error: C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\stdafx.h:13 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\FaceTracker.h:4 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\mexFile.cpp:2 Could not find include file

lcc preprocessor error: C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\stdafx.h:14 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\FaceTracker.h:4 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\mexFile.cpp:2 Could not find include file "cv.h"

lcc preprocessor error: C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\stdafx.h:15 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\FaceTracker.h:4 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\mexFile.cpp:2 Could not find include file "highgui.h"

lcc preprocessor error: C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\stdafx.h:16 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\FaceTracker.h:4 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\mexFile.cpp:2 Could not find include file "cxcore.h"

lcc preprocessor error: C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\IO.h:42 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\PDM.h:42 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\CLM.h:42 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\Tracker.h:42 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\FaceTracker.h:5 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\mexFile.cpp:2 Could not find include file "cv.h"

lcc preprocessor error: C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\IO.h:44 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\PDM.h:42 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\CLM.h:42 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\Tracker.h:42 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\FaceTracker.h:5 C:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\mexFile.cpp:2 Could not find include file `> Blockquote

How can I fix those errors? Thank in advance.

Upvotes: 0

Views: 562

Answers (1)

macduff
macduff

Reputation: 4685

You are going to have to specify all of the required include paths to the mex compile function using the -I option, see help mex. Here's an example:

 mex -v -g -IC:\Users\hodhod\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\FaceTracker\SomeMissingIncludes mexFile.cpp

Upvotes: 1

Related Questions