Problem with Visual Studio 2010

Hello everyone! My Goal is to program a standalone Application that interacts with Matlab.
My System is: * Windows 7 * 64bit * Visual Studio 2010 * MATLAB R2011a
I set in VS the following Parameters:
Configuration Properties > Linker > General > Additional Library Directories to "C:\Program Files\MATLAB\R2011a\extern\lib\win64\microsoft"
Configuration Properties > C/C++ > General > Additional Include Directories to "C:\Program Files\MATLAB\R2011a\extern\include"
an the error that occur is
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "mxArrayToString" in Funktion "mexFunction".
Or every other Mexelement that i am using ... Any Help is welcome.

1 Comment

And did you include mex.h in the code and add all needed libraries found in the lib path?
When does the error occur? Do you run the mex command from within Matlab or do you want to compile the mex from MSVC for any reasons?

Sign in to comment.

 Accepted Answer

Michael
Michael on 9 Sep 2011
Thank you for your Advice. My Application is now compiling without errors, BUT now i don't have a standalone Application anymore.
I want my GUI as a standalone application that is ABLE to communicate with my installed Matlab version and if i delete my Matlab version then my Gui is still functional, except the Matlab functions... Is there a chance to do this?

1 Comment

Ah. It looks like you need the MATLAB Engine API (http://www.mathworks.com/help/techdoc/matlab_external/f29148.html) and not the MEX API. MEX is used to call C/C++ code from MATLAB, but MATLAB Engine is used to call MATLAB code for C/C++ applications. The call to the function engOpen (that starts the MATLAB Engine) should fail if MATLAB is not present, so you can use that condition to decide whether to make MATLAB calls or not.

Sign in to comment.

More Answers (3)

I want to compile it with MSVC.
The include of "mex.h" is made and the error occurs if i try to compile it.
Okay the Functionname "mexFunction" is a bit confusing so i renamed it in "test"^^
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "mexPrintf" in Funktion ""void __cdecl test(void)"
You have to define a gateway function with the following prototype:
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
In addition, please follow instructions under the section "Compiling MEX-Files with the Microsoft Visual C++ IDE" on this page. And remember to configure your Visual Studio to compile for an x64 target if you have 64-bit MATLAB.
Michael
Michael on 28 Sep 2011
Thats it! Thank you very much.
The direct link to the solution is:
4.d was i little bit unclear for myself, there I used "Configuration Properties -> Debugging ==> environment variable" and it works.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!