Ich verwende Matlab 2013a und Visual Studio 2013. Ich versuche MatLab kompilierte DLL aus einer C++ - Konsole-Anwendung zu verwenden. Meine einfache Matlab-Test-DLL und Konsolen-Anwendung ist für 64-Bit-Maschinen kompiliert (ich habe sichergestellt, dass sie 64bit via Dumpbin sind). Ich habe auch korrekte Version von MCR auf meinem Rechner installiert (auch wenn es nicht notwendig ist).MatLab C++ Gemeinsame Dll-Bibliothek Initialisierung Crash
Ich habe meinen Compiler mit dem Befehl "mbuild -setup" eingerichtet.
Ich kompiliere meine .m-Datei mit dieser Befehlszeile: "mcc-v -W cpplib: mylib -T Link: lib myFunc" erfolgreich.
In meiner Konsolenanwendung schließe ich diese Bibliotheken ein: mylib.lib, mclmcrrt.lib, mclmcr.lib, libmx.lib, libmat.lib und verwende die Bibliotheken in diesem Pfad "C: \ Programme \ MATLAB \ R2013a \ extern \ lib \ win64 \ microsoft "
Wenn ich mein Programm debugge, initialisiert es MCR erfolgreich mit diesem Aufruf:" mclInitializeApplication (NULL, 0) ", aber wenn ich" mylibInitialize() "aufrufen, um meine Bibliothek zu initialisieren Programm stürzt ab. Es wirft nicht einmal eine Lösung, daher kann ich es nicht mit try/catch blockieren. Es gibt eine unbehandelte Ausnahmefehler- und Zugriffssteuerungsfehlermeldung.
Dies sind Beispiel Debug Ausgabe Nachrichten, die ich habe;
Erste-Chance-Ausnahme bei 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ - Ausnahme: Xercesc_2_7 :: NoSuchElementException am Speicherort 0x000000E263EF4E48.
Erste-Chance-Ausnahme bei 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ Ausnahme: xsd_binder :: MalformedDocumentError an Speicherplatz 0x000000E263EF4E40.
Erste-Chance-Ausnahme bei 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ Ausnahme: xercesc_2_7 :: NoSuchElementException an Speicherplatz 0x000000E263EF4E48.
Erste-Chance-Ausnahme bei 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ Ausnahme: boost :: am Speicherplatz 0x000000E2643FF630 thread_interrupted.
Erste-Chance-Ausnahme bei 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ Ausnahme: boost :: am Speicherplatz 0x000000E2642FFCD0 thread_interrupted.
Erste-Chance-Ausnahme bei 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ Ausnahme: CryptoPP :: AES_PHM_Decryption :: InvalidCiphertextOrKey an Speicherplatz 0x000000E264EFB0F0.
Erste-Chance-Ausnahme bei 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ Ausnahme: tfFailedException an Speicherplatz 0x000000E264EF4C10.
Erste-Chance-Ausnahme bei 0x00007FFA22761F08 in MatlabTest.exe: Microsoft C++ Ausnahme: varflowFailedException an Speicherplatz 0x000000E264EF9410. Der Thread 0x3550 wurde mit Code 0 (0x0) beendet. 'MatlabTest.exe' (Win32): Geladen 'C: \ Programme \ MATLAB \ R2013a \ bin \ win64 \ hgbuiltins.dll'. Die PDB-Datei kann nicht gefunden oder geöffnet werden.
Erste-Chance-Ausnahme bei 0x0000000000B46E60 (m_interpreter.dll) in MatlabTest.exe: 0xC0000005: Zugriffsverletzungsleseposition 0x0000000064EF3B90. Nicht behandelte Ausnahme bei 0x0000000000B46E60 (m_interpreter.dll) in MatlabTest.exe: 0xC0000005: Zugriff auf Leseort der Fehler 0x0000000064EF3B90 zugreifen.
Das Programm '[12952] MatlabTest.exe' wurde mit Code 0 (0x0) beendet.
Ich habe MCR auf einem anderen Computer installiert und versucht, diese Konsolenanwendung auszuführen. Ich habe das gleiche Ergebnis. Auch
habe ich versucht, Vigenere Beispiel die Loren, http://blogs.mathworks.com/loren/2011/02/03/creating-c-shared-libraries-and-dlls/#respond
Es hat nicht funktioniert entweder.
Haben Sie eine Idee, warum das passiert?
Dank
Sie verlieren UI von Matlab (tun Sie wirklich brauchen, wenn es von C++ nennen?), Aber trotzdem ist es besser, dann Zugriffsverletzung. –