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 Commento

Jan
Jan il 8 Set 2011
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?

Accedi per commentare.

 Risposta accettata

Michael
Michael il 9 Set 2011

0 voti

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 Commento

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.

Accedi per commentare.

Più risposte (3)

Michael
Michael il 8 Set 2011
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 il 28 Set 2011

0 voti

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!

Translated by