Effacer les filtres
Effacer les filtres

MatLab C++ Shared Dll library initialization problem

23 vues (au cours des 30 derniers jours)
cyvz
cyvz le 31 Mai 2016
Commenté : yuanjie li le 21 Mar 2021
I am using Matlab 2013a and Visual Studio 2013. I am trying to use MatLab compiled dll from a C++ console application. My simple Matlab test dll and console application is compiled for 64bit machines (I made sure they are 64bit via dumpbin). I also have correct version of MCR installed on my machine (even if it's not necessary).
I setup my compiler using "mbuild -setup" command.
I compile my .m file using this command line: "mcc -v -W cpplib:mylib -T link:lib myFunc" successfully.
In my console application, I include these libraries: mylib.lib, mclmcrrt.lib, mclmcr.lib, libmx.lib, libmat.lib and use the libraries in this path "C:\Program Files\MATLAB\R2013a\extern\lib\win64\microsoft"
When I debug my program, it successfully initializes MCR using this call: "mclInitializeApplication(NULL, 0)" but when I call "mylibInitialize()" in order to initialize my library, program crashes. It doesn't even throw an axception therefore I cannot handle it using try/catch block. It gives unhandled exception and access vialoation error message.
These are sample debug output messages I got;
First-chance exception at 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ exception: xercesc_2_7::NoSuchElementException at memory location 0x000000E263EF4E48.
First-chance exception at 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ exception: xercesc_2_7::SchemaDateTimeException at memory location 0x000000E263EF4EB8.
First-chance exception at 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ exception: xsd_binder::MalformedDocumentError at memory location 0x000000E263EF4E40.
First-chance exception at 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ exception: xercesc_2_7::NoSuchElementException at memory location 0x000000E263EF4E48.
First-chance exception at 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ exception: boost::thread_interrupted at memory location 0x000000E2643FF630.
First-chance exception at 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ exception: xsd_binder::MalformedDocumentError at memory location 0x000000E263EFA640.
First-chance exception at 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ exception: boost::thread_interrupted at memory location 0x000000E2642FFCD0.
First-chance exception at 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ exception: std::runtime_error at memory location 0x000000E264EFF530.
First-chance exception at 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ exception: CryptoPP::AES_PHM_Decryption::InvalidCiphertextOrKey at memory location 0x000000E264EFB0F0.
First-chance exception at 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ exception: tfFailedException at memory location 0x000000E264EF4C10.
First-chance exception at 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ exception: varflowFailedException at memory location 0x000000E264EF9410. The thread 0x3550 has exited with code 0 (0x0). 'MatlabTest.exe' (Win32): Loaded 'C:\Program Files\MATLAB\R2013a\bin\win64\hgbuiltins.dll'. Cannot find or open the PDB file. First-chance exception at 0x0000000000B46E60 (m_interpreter.dll) in MatlabTest.exe: 0xC0000005: Access violation reading location 0x0000000064EF3B90. Unhandled exception at 0x0000000000B46E60 (m_interpreter.dll) in MatlabTest.exe: 0xC0000005: Access violation reading location 0x0000000064EF3B90.
The program '[12952] MatlabTest.exe' has exited with code 0 (0x0).
I installed MCR to another machine and tried to run this console application. I got the same result.
I tried Loren's Vigenere example too,
It didn't work either.
I couldn't find any helpful answer on Matlab community or stackoverflow.
Do you have any idea why this is happening?
Thanks

Réponse acceptée

cyvz
cyvz le 15 Juin 2016
It seems problem is MATLAB and Visual Studio version mismatch. If I use MatLab 2016a with Visual Studio 2013, there is no problem and everything works perfectly.
  3 commentaires
Markus Schiefele
Markus Schiefele le 30 Mai 2017
Same thing with Matlab 2017a and VisualStudio 2017
money
money le 11 Juil 2019
Do you solve the problem ?

Connectez-vous pour commenter.

Plus de réponses (3)

Horst Steuer
Horst Steuer le 20 Nov 2017
Had the same issue with MATLAB 2015b, 2016a, 2017b, Visual Studio 2015 and 2017. The program either crashed on "mylibInitialize()" or returned with an empty error message. Turned out that the program actually worked outside of Visual Studio, i.e. starting from command line. Solved it by setting Debugger Type to Managed Only in Visual Studio (Properties of Project -> Configuration Properties -> Debugging -> Debugger Type).
  5 commentaires
Jevy Lee
Jevy Lee le 25 Juil 2019
Thank you very much! Your approach can solve this problem. My mabtlab ver is 2017b, and vs is 2017.
yuanjie li
yuanjie li le 21 Mar 2021
my ver is 2020b and vs2019, it works, thanks a lot

Connectez-vous pour commenter.


Anatoly Khamukhin
Anatoly Khamukhin le 25 Jan 2018
Modifié(e) : Anatoly Khamukhin le 25 Jan 2018
Problem is in usage of java in MATLAB.
Call
const char *args[] = {"-nojvm"};
const int count = sizeof(args) / sizeof(args[0]);
mclInitializeApplication(args, count))
instead of
mclInitializeApplication(NULL,0)
It solved the same issue for me.
  2 commentaires
TripleSSSS
TripleSSSS le 17 Sep 2018
It also solved my problem
Andreas Schwarzinger
Andreas Schwarzinger le 28 Jan 2021
Yes. This worked for me as well. Thank you.

Connectez-vous pour commenter.


kishore
kishore le 21 Août 2017
could you please provide the compatibility version for MATLAB R2016b with visual studio version.
same issue with MATLAB R2016b with visual studio 2013.
  1 commentaire
Jun Xu
Jun Xu le 8 Mar 2020
https://www.mathworks.com/support/requirements/previous-releases.html

Connectez-vous pour commenter.

Catégories

En savoir plus sur C Shared Library Integration dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by