2013-03-11 6 views
11

Ich habe Mex-Datei erfolgreich auf meinem Laptop kompiliert. Aber wenn ich es leite, heißt es Invalid mex file 'c:\newfolder\filename.mexw32' The specified module could not be found.Fehler: Ungültige MEX-Datei, das angegebene Modul konnte nicht gefunden werden

System specification: 
OS: windows 7 
MATLAB 2010a 
Microsoft Visual Studio 2008. 

Die gleiche Mex-Datei ist kompiliert und auf meinem PC unter XP SP3 erfolgreich ausgeführt.

+0

Haben Sie eine 32- oder 64-Bit-Installation? – Nick

+0

Ja, ich habe 32bit Installation. mein os ist auch 32bit – anand

+1

Verwenden Sie MS Dependency Walker im Profil-Modus, um das zu debuggen –

Antwort

4

Haben Sie die mex-Datei auf einem anderen System als dem, auf dem es erstellt wird?

Wenn ja, dann müssen Sie die Microsoft Visual C++ Redistributable auf dieser Maschine installieren.

+1

Nein, ich kompilierte mex-Datei auf der Maschine separat und erfolgreich. Aber als ich versuchte, diese mexw32-Datei auf meinem Laptop zu laufen, zeigt es mir Fehler. – anand

9

This MathWorks support link schlägt zwei mögliche Gründe für Ihr Problem:

  1. Sie haben nicht alle notwendigen Bibliotheken, die die MEX-Funktion auf abhängt.
  2. Sie führen eine MEX-Datei auf einer anderen Version von MATLAB als auf der kompiliert wurde.

So oder so, die Quelle dieser Fehler lokalisieren sie sagt, dass Sie alle abhängigen Bibliothek Dateien auflisten müssen und deren Existenz im System überprüfen Sie versuchen, die MEX-Datei auf, und auch die Dependecy Walker empfiehlt laufen als das Werkzeug, um das zu tun.

+0

nach der Verwendung von Dependency Walker, zeigt es .. ? CV210d.dll ? cxcore210d.dll ? libmex.dll ? libmx.dll. Für alle der oben genannten zeigt es "Fehler beim Öffnen der Datei. Das System kann die angegebene Datei nicht finden (2)." – anand

+0

@anand Dies ist etwas mit OpenCV verwandt. Hast du diese Datei auf deinem Laptop? –

+0

Ja, ich habe alle diese Datei auf meinem Laptop im Verzeichnis C: \ OpenCV2.1 \ bin. Ich weiß nicht, was ich danach machen soll ... Bitte schlagen Sie die Lösung vor. – anand

0

Ich hatte dieses Problem auch beim Upgrade von Matlab2010a/VS2008 auf Matlab2013a/VS2010.

Alle meine Umgebungsvariablen wurden korrekt gesendet. Ein Neustart behoben Probleme mit OpenCV-DLLs nicht gefunden, ich nehme an, dass es immer noch versucht, zu den OpenCV-DLLs für VS2008 zu verknüpfen (obwohl ich den Pfad geändert hatte). Trotzdem konnte meine Mex-Datei libmex.dll nicht finden.

Als ich Matlab2013a installiert habe, habe ich die alte Version nicht deinstalliert (falls ich zurück wollte). Das war jedoch die Ursache meines Problems. Sobald ich die alte Version von Matlab deinstalliert und neu gestartet habe, war das Problem verschwunden.

0

Ich hatte ein ähnliches Problem. Ich verlinkte nur gegen 1 'lib', also kopierte ich einfach diese lib in den gleichen Ordner wie die mexw64 und es funktionierte.

Ich habe nicht nach dem richtigen Ort gesucht, um MATLAB zu sagen, dass sie den realen Ort der Bibliothek zu dem Pfad hinzufügen soll, den sie gerade anschaut.

Verwandte Themen