Path: news.mathworks.com!not-for-mail
From: "Ashish Uthama" <first.last@mathworks.com>
Newsgroups: comp.soft-sys.matlab
Subject: Re: Opening mat file in C
Date: Thu, 30 Jul 2009 08:58:09 -0400
Organization: TMW
Lines: 89
Message-ID: <op.uxvsy7fza5ziv5@uthamaa.dhcp.mathworks.com>
References: <h4qaei$10m$1@fred.mathworks.com> <h4qhv1$t3$1@fred.mathworks.com>
 <h4qrph$6o5$1@fred.mathworks.com> <h4riko$h57$1@fred.mathworks.com>
 <h4s27h$3cm$1@fred.mathworks.com>
NNTP-Posting-Host: uthamaa.dhcp.mathworks.com
Mime-Version: 1.0
Content-Type: text/plain; format=flowed; delsp=yes; charset=iso-8859-15
Content-Transfer-Encoding: 7bit
X-Trace: fred.mathworks.com 1248958689 27054 172.31.57.126 (30 Jul 2009 12:58:09 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Thu, 30 Jul 2009 12:58:09 +0000 (UTC)
User-Agent: Opera Mail/9.63 (Win32)
Xref: news.mathworks.com comp.soft-sys.matlab:559601


On Thu, 30 Jul 2009 08:04:01 -0400, Dhiman Saha <saha.dhiman@gmail.com>  
wrote:

> "James Tursa" <aclassyguywithaknotac@hotmail.com> wrote in message  
> <h4riko$h57$1@fred.mathworks.com>...
>> "Dhiman Saha" <saha.dhiman@gmail.com> wrote in message  
>> <h4qrph$6o5$1@fred.mathworks.com>...
>> > "James Tursa" <aclassyguywithaknotac@hotmail.com> wrote in message  
>> <h4qhv1$t3$1@fred.mathworks.com>...
>> > > "Dhiman Saha" <saha.dhiman@gmail.com> wrote in message  
>> <h4qaei$10m$1@fred.mathworks.com>...
>> > > > I want to open a mat file which has some two dimensional matrices  
>> in a C file. I followed the help file on that but when i compile the  
>> file i get lots of errors like "undefined reference to matOpen" and  
>> such errors for all the matlab functions. I have included the mat.h  
>> file in the include directory of the compiler. I am using the minGW  
>> compiler on windows XP.
>> > > >
>> > > > IS there anything I need to include?
>> > > >
>> > > > Thanks
>> > > > Dhiman
>> > >
>> > > Have you also included mex.h or engine.h? Can you show the source  
>> code you are trying?
>> > >
>> > > James Tursa
>> >
>> > I just tried to compile the matdgns.c file given in matlab
>> > edit([matlabroot '/extern/examples/eng_mat/matdgns.c']);
>> > This file does not have any mex.h or engine.h included.
>> >
>>
>> I just tried it and it compiled and ran fine. Here is what I did:
>>
>> - Copied the file matdgns.c from the [matlabroot  
>> '/extern/examples/eng_mat'] directory to a work directory.
>>
>> - Made that work directory the current directory
>>
>> - Issued the following mex -setup command:
>>
>> mex -setup
>> (then selected the MS VC 8.0 compiler)
>>
>> - Issued the following commands (for MS VC 8.0):
>>
>> options = [matlabroot '\bin\win32\mexopts\msvc80engmatopts.bat'];
>> mex('-f', options, 'matdgns.c', '-v');
>>
>> - Ran the program with the following command:
>>
>> !matdgns matlab.mat
>>
>> James Tursa
>
>
> Thank you for the reply. But can i use matdgns.c file on the MinGW  
> compiler. Also how can i open the mat file using C in a system that does  
> not have matlab installed. (If its required I can also post this as a  
> new problem.)
>
> Dhiman Saha


Dhiman,

I would first try out what James suggested to ensure that the documented  
workflow runs cleanly. I would then start out customizing it for my  
workflow.

Did you have a chance to peruse this document?
     http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external/f30937.html
Or please paste this in the MATLAB command window:
     web([docroot,'/techdoc/matlab_external/f30937.html'])

Specially this section which talks about compilation and deployment to  
systems without MATLAB.

Please find more details online at:
     http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external/f19027.html
Or please paste this in the MATLAB command window:
     web([docroot,'/techdoc/matlab_external/f19027.html'])


Another trick is to use the -v option with the mex command to figure out  
the actual command line args sent to the compiler. You could use this  
information to then configure your compiler outside MATLAB to pass the  
required settings/libraries/include files.