Help with creating a MEX file in MATLAB from multiple C++ Source codes

15 views (last 30 days)
I am trying to create a MEX file in MATLAB with multiples C++ source codes in .cpp and .h extensions. The C++ source codes builds fine with no errors in Microsoft Visual C++ 2010 professional and i have created a static library of .lib file All source code files and static library of functions are located in my MATLAB current folder path In MATLAB i have selected my default compiler as MS Visual C++ Professional 2010 and i am using the following syntax in MATLAB mex -v [list of C++ source code files i.e. .cpp and .h files] -l[static library name] -L.
I get a link error in MATLAB as; LINK : error LNK2001: unresolved external symbol mexFunction C:\Users\abo09001\AppData\Local\Temp\mex_Ko9pXP\templib.x : fatal error LNK1120: 1 unresolved externals
I do not know how to program in C++ but i am relatively ok in MATLAB. Any help with the error will be appreciated.
  3 Comments

Sign in to comment.

Accepted Answer

Kaustubha Govind
Kaustubha Govind on 17 Sep 2013
All MEX-functions need to have an entry-point named mexFunction with a specific prototype. I would recommend that you read the section Creating a Source MEX-File to help you get started.

More Answers (1)

Abigail Osei-Asamoah
Abigail Osei-Asamoah on 17 Sep 2013
I already tried to include the gateway function to the .cpp files and the #Include "mex.h" but i get errors when i try try to create the MEX file in MATLAB with the mex command after adding the gateway function and the #include "mex.h"
  4 Comments
Abigail Osei-Asamoah
Abigail Osei-Asamoah on 18 Sep 2013
After adding #include "mex.h" and void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
/*sourcecode here */ }
to my main.cpp code and trying to create mex with my .cpp files and headers i get the following error in matlab :
main.cpp main.cpp(22) : error C2601: 'main' : local function definitions are illegal main.cpp(16): this line contains a '{' which has not yet been matched
I checked line 16 in the C++ code and the '{' is matched by '}' after the source code so i don't know what is wrong. How do i fix this error? Any help is appreciated. Thanks
Abigail Osei-Asamoah
Abigail Osei-Asamoah on 18 Sep 2013
Thank you all for the help but i have been able to create the MEX files. I was getting an error because i was placing another function in my source .cpp codes within the mex function used to create the gateway routine in my .cpp files. Once i separated the mex function from that function i.e. i didn't define a function within a function,MATLAB has successfully created my MEX file. Thanks.

Sign in to comment.

Categories

Find more on Write C Functions Callable from MATLAB (MEX Files) 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!