So laden Sie eine c++ - dll-Datei in Matlab
Ich habe eine C++ - dll-Datei, die verwendet eine Menge von anderen c++ - Bibliotheken (IPP, Opencv +++), die ich brauche laden in matlab. Wie kann ich dies tun?
Habe ich versucht loadlibrary und mex. Die load library funktioniert nicht.
Mex findet die linux-Sachen (die Plattform-unabhängige Bibliothek) und versucht, Sie sind. Und das funktioniert nicht.
Hat jemand irgendwelche guten Ideen?
- Hinzugefügt C-Wrapper um die C++ - code, und das machte die loadlib Funktionen arbeiten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
loadlibrary sollte funktionieren. Ich benutze es all die Zeit, die zum aufrufen von Funktionen aus dlls, die in C++ geschrieben, mit C-Wrapper.
Welche Fehler sind Sie immer, wenn Sie versuchen, mit loadlibrary?
Stellen Sie sicher, dass die exportierten Funktionen der dll sind C-Funktionen, die nicht C++ - Funktionen. Wenn nicht, dann schreiben Sie C-Wrapper.
Mehr info, was genau Sie tun, wenn Sie mit loadlibrary wäre hilfreich.
Wie von anderen erwähnt, sollte man zuerst wickeln Sie Ihre C++ - Bibliothek, als C-Bibliothek - mathworks verwendet, um raten nicht zur Verwendung von C++ - code direkt in mex (dlopening C++ - Kern direkt ist kompliziert), vielleicht ist es immer noch wahr.
Deine Beschreibung ist ziemlich unklar, auch: was meinst du mit "mex findet die linux-Sache", aber das funktioniert nicht. Sagen, dass es nicht funktioniert, ist nicht hilfreich: die genauen Befehle und Fehlermeldungen.
Können Sie sich für den Java-Ansatz (seit Matlab läuft auf einem JRE und kann Zugriff auf Java-Objekte/Methoden - nur bewusst sein, dass die Matlab-JRE ist nicht so up-to-date wie die neueste JRE, den hab ich ausgeführt verwendet Java 1.5) und verwenden JNA Zugriff auf die DLL.
Oder, wenn Sie schrieb die top-level-DLL, können Sie sich für die COM/ActiveX-Ansatz.
Habe ich gute Erfolge mit der Architektur die Schnittstelle meiner C++ - Funktionen als COM/ActiveX-Bibliotheken-Sie müssen nicht die Mühe mit diesem .h Zeug.
Sehen die Externe Schnittstellen guide auf die COM-clients, insbesondere der Teil über die Verwaltung/Konvertierung Daten.
Wäre es zusätzliche Arbeit zum hinzufügen von COM - /ActiveX-Schicht, sondern machen würde Ihrer Bibliothek mehr tragbar in der Windows-Welt und wahrscheinlich mehr leicht in MATLAB.
Wenn Sie eine Menge der Funktionsaufrufe an die DLL, COM/ActiveX-Ansatz könnte schneller sein (nicht sicher), aber ansonsten denke ich, dass die JNA Ansatz wäre einfacher.