MCR invocation
Mostrar comentarios más antiguos
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,
Respuestas (1)
Kaustubha Govind
el 9 de Mayo de 2011
1 voto
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 comentarios
Shichang
el 9 de Mayo de 2011
Kaustubha Govind
el 9 de Mayo de 2011
Apologies - it looks like "-R" option is only available for standalone applications (see note on http://www.mathworks.com/help/toolbox/compiler/mcc.html). It also says "To override MCR options in the other MATLAB Compiler targets, use the mclInitializeApplication and mclTerminateApplication functions. For more information on these functions, see Calling a Shared Library (http://www.mathworks.com/help/toolbox/compiler/f2-972343.html#f2-999458)."
So it looks like you need to pass the "-nojvm" option into mclInitializeApplication (http://www.mathworks.com/help/toolbox/compiler/mclinitializeapplication.html).
Shichang
el 9 de Mayo de 2011
Kaustubha Govind
el 9 de Mayo de 2011
Sorry about that - mclInitializeApplication is indeed meant to be called from C/C++ applications. For a .NET assembly, it seems that you can do it by specify NOJVM as an assembly-wide attribute. See: http://www.mathworks.com/help/toolbox/dotnetbuilder/ug/bso89j3.html#bso89ma-1
Shichang
el 9 de Mayo de 2011
Kaustubha Govind
el 9 de Mayo de 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
el 9 de Mayo de 2011
Categorías
Más información sobre Deploy to .NET Applications Using MWArray API en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!