MATLAB Answers

MCR invocation

11 views (last 30 days)
Shichang
Shichang on 9 May 2011
I understand that MCR is invoked by Java if I call my compiled code via .NET and Java. If I call compiled code through c/c++ shared libraries, or COM libraries, or standalone applications, would MCR still be invoked by Java?
I'm getting the error 'Unable to start the JVM' when calling my compiled Matlab code from .NET. And I'm thinking to switch to other interfaces to avoid the error. Would it be possible?
Can anyone else who encountered the JVM error suggest a solution?
Thanks,

  0 Comments

Sign in to comment.

Answers (1)

Kaustubha Govind
Kaustubha Govind on 9 May 2011
MATLAB and the MCR use JVM for some functionality. If the code that you'd like to compile does not use JVM functionality (you can verify this by starting MATLAB using "matlab -nojvm" from the system prompt and then running your code), you can compile your code using the mcc "-R -nojvm" option when compiling shared libraries or standalone applications.
With regards to why you see the "Unable to start the JVM" - I would recommend contacting MathWorks Tech Support so they can debug and diagnose the issue.

  7 Comments

Show 4 older comments
Shichang
Shichang on 9 May 2011
By following the instruction from the URL link, I put the following line in my C# project (I assume anywhere in my project should be fine).
[assembly: MathWorks.MATLAB.NET.Utility.NOJVM(true), MathWorks.MATLAB.NET.Utility.LOGFILE("c:\temp\ngAnalytics.txt")]
When debugging, in the first place that I'm making a call to my Matlab function, I try to query MWMCR about the JVM. Apparently, JVM is enabled already by the true value of the following statement.
bool isMCRJVMEnabled = MathWorks.MATLAB.NET.Utility.MWMCR.IsMCRJVMEnabled();
Anything I'm doing wrong here? Or am I completely missing something?
If there's no way I can start MCR in .NET without JVM, I'd like to be able to adjust the runtime VM heap size. Any suggestions on doing that?
Thanks,
Kaustubha Govind
Kaustubha Govind on 9 May 2011
I'm sorry - I have little to no experience with Builder NE - have you tried contacting Tech Support about why using the NOJVM attribute doesn't work?
To increase Java heap space for the MCR, I believe you need to create a java.opts file just like for MATLAB (http://www.mathworks.com/support/solutions/en/data/1-18I2C/index.html) and place it in the $MCRROOT/bin/$ARCH directory. $MCRROOT is the MCR root directory (eg. C:\Program Files\MATLAB\MATLAB Compiler Runtime\) and $ARCH is your system
architecture, which you find by typing at the MATLAB Command Prompt: computer('arch')
Shichang
Shichang on 9 May 2011
I'm still waiting for Tech Support to write back to me. But of course they're much slower than your response.
Thanks a lot for your help anyways!

Sign in to comment.


Translated by