Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Invalid MEX-file error after compiling matcreat.cpp

Asked by Jeremy on 2 Apr 2013

I am trying to follow the procedure in the help topic "Compiling and Linking MAT-File Programs" to create a MAT-file. I am running 64-bit MATLAB 2013a on Windows XP. I installed Microsoft SDK 7.1, copied the matcreat.cpp file to C:\test, and entered the following command:

mex ('-v', '-f', [matlabroot '\bin\win64\mexopts\mssdk71engmatopts.bat'], 'c:\test\matcreat.cpp')

The mex command did not give any errors and two files were created in the My Documents\MATLAB directory: matcreat.exe and matcreat.mexw64. Next I typed in the command line:

matcreat

and MATLAB gave an error: "Invalid MEX-file c:\...\matcreat.mexw64': c:\...\matcreat.mexw64 is not a valid Win32 application."

When I opened matcreat.exe in Dependency Walker, libmx.dll and libmat.dll are shown with an error: "The system cannot find the file specified."

What am I doing wrong?

0 Comments

Jeremy

Tags

Products

1 Answer

Answer by James Tursa on 2 Apr 2013
Edited by James Tursa on 2 Apr 2013
Accepted answer

Are you trying to create a mex function to run from the MATLAB environment, or are you trying to create a program (i.e., an exe) that runs and creates mat files? I am confused because your use of the mxxdk71engmatopts.bat file indicates that you are trying to create an exe file that runs separate from MATLAB (that's what that bat file does), but your effort in typing in matcreat at a MATLAB command line indicates you want a mex function instead.

I checked the code, and matcreat.cpp is intended to be a program (i.e., an exe) not a mex function. So you can't call it as a mex function. Instead,you can invoke the program at the MATLAB command line with the bang operator:

!matcreat

I.e., type an excalamation point followed by the program name. MATLAB will act as a display console for the program while it is running. The only caveat is that the display buffering for MATLAB running as a display console doesn't work properly, so sometimes you will not see any program screen output until the program actually ends.

1 Comment

Jeremy on 2 Apr 2013

I invoked the program with the bang operator and MATLAB created the MAT file as expected. Thanks!

James Tursa

Contact us