Matlab r2011b 64 Bit
Moderator: Guido Körber
Matlab r2011b 64 Bit
Hallo,
Ich benutze Matlab R2011b und habe die Matlab Beispiele von der CodeMercs Website getestet. Zunächst habe ich sie auf meinem Rechner getestet, mit einer 64-bit Version von Matlab unter Windows 7. Ich habe die Dateien iowkit.dll, iowkit.h und iokit.lib aus dem Beispiel durch diejenigen aus der "iowkit api" für 64 Bit von der CodeMercs Website ausgetauscht. Wenn ich das Matlab Skript sample1.m teste bekomme ich folgende Fehlermeldung:
Error using loadlibrary (line 421)
The function call type stdcall is not
supported
Wenn ich das selbe Skript "sample1.m" bei meinem Kollegen, unter einem 32 Bit System teste (natürlich mit den entsprechenden 32-Bit Libraries) funktioniert es.
Was kann ich tun, dass ich mit Matlab und dem IOWARRIOR auch unter der 64 Bit Version von Matlab arbeiten kann? Habt Ihr eine Idee?
Ich benutze Matlab R2011b und habe die Matlab Beispiele von der CodeMercs Website getestet. Zunächst habe ich sie auf meinem Rechner getestet, mit einer 64-bit Version von Matlab unter Windows 7. Ich habe die Dateien iowkit.dll, iowkit.h und iokit.lib aus dem Beispiel durch diejenigen aus der "iowkit api" für 64 Bit von der CodeMercs Website ausgetauscht. Wenn ich das Matlab Skript sample1.m teste bekomme ich folgende Fehlermeldung:
Error using loadlibrary (line 421)
The function call type stdcall is not
supported
Wenn ich das selbe Skript "sample1.m" bei meinem Kollegen, unter einem 32 Bit System teste (natürlich mit den entsprechenden 32-Bit Libraries) funktioniert es.
Was kann ich tun, dass ich mit Matlab und dem IOWARRIOR auch unter der 64 Bit Version von Matlab arbeiten kann? Habt Ihr eine Idee?
- Christoph Jung
- Posts: 672
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: Matlab r2011b 64 Bit
Wurde schon versucht auf dem 64Bit System die 32Bit komponenten dafür zu nutzen?
Software developer
Re: Matlab r2011b 64 Bit
Ja, auch das habe ich versucht. Dann bekomme ich folgende Fehlermeldung:
Error using loaddefinedlibrary
C:\Users\Standard\Desktop\_MatLab_Samples\MatLab
Samples\iowkit.dll ist keine
zulässige Win32-Anwendung.
Error using loaddefinedlibrary
C:\Users\Standard\Desktop\_MatLab_Samples\MatLab
Samples\iowkit.dll ist keine
zulässige Win32-Anwendung.
Re: Matlab r2011b 64 Bit
Zur Lösung meines Problems:
Ich habe gestern Abend noch von meinem Laptop aus gearbeitet. Darauf läuft ein Ubuntu 10.04 (ich weiß, ich bin ein bisschen hinten dran ;), werde aufrüsten, sobald ich mir eine SSD-Platte gekauft habe). Ich habe darauf octave 3.6 am laufen (nicht die ältere Version von Octave, die man über die Paktequellen beziehen kann). Ich habe ein mex-file geschrieben, wie hier beschrieben:
http://www.gnu.org/software/octave/doc/ ... Files.html
Damit kann man in C geschriebene Funktionen unter octave aufrufen. Das sollte es auch für Matlab geben, habe ich aber noch nie ausprobiert (ich bin mir nicht sicher ob ich unter Windows den richtigen Compiler installiert habe). Die Treiber für den IOWARRIOR waren auf meinem Ubuntu System bereits installiert. Ich habe die Header-Datei iowarrior.h in mein mex File eingebunden und konnte damit den IOWARRIOR ansprechen. Jetzt werde ich die i2c-Treiber testen.
Mir ist klar, dass das für das 64 Bit Problem nicht hilfreich ist, mir geht jedoch etwas die Zeit aus. Ich werde bei Gelegenheit noch einmal unter Matlab-64 Bit testen. Vlt. geht es auch hier über mex, ansonsten muss ich mir die dll noch einmal genauer anschauen. Wie die erste Fehlermeldung besagt hat es ja irgendetwas mit stdcall zu tun. Ich kenne mich nur leider sehr wenig mit dynamic link libraries unter Windows aus, um das auf die Schnelle hinzukriegen. Das bedeutet ein wenig Studium der Microsoft man-pages.
Erfreulich ist aber, dass man den iowarrior unter octave ansteuern kann ... :). Falls jemand Interesse hat, bin ich gerne bereit das mex-File zu teilen.
Falls noch jemand eine Idee hat, wie ich spontan das Problem mit Matlab in 64 Bit lösen könnte, würde ich das gerne noch ausprobieren. Ansonsten wünsche ich schonmal frohe Ostern und vielen Dank für die bisherig Hilfe :).
Ich habe gestern Abend noch von meinem Laptop aus gearbeitet. Darauf läuft ein Ubuntu 10.04 (ich weiß, ich bin ein bisschen hinten dran ;), werde aufrüsten, sobald ich mir eine SSD-Platte gekauft habe). Ich habe darauf octave 3.6 am laufen (nicht die ältere Version von Octave, die man über die Paktequellen beziehen kann). Ich habe ein mex-file geschrieben, wie hier beschrieben:
http://www.gnu.org/software/octave/doc/ ... Files.html
Damit kann man in C geschriebene Funktionen unter octave aufrufen. Das sollte es auch für Matlab geben, habe ich aber noch nie ausprobiert (ich bin mir nicht sicher ob ich unter Windows den richtigen Compiler installiert habe). Die Treiber für den IOWARRIOR waren auf meinem Ubuntu System bereits installiert. Ich habe die Header-Datei iowarrior.h in mein mex File eingebunden und konnte damit den IOWARRIOR ansprechen. Jetzt werde ich die i2c-Treiber testen.
Mir ist klar, dass das für das 64 Bit Problem nicht hilfreich ist, mir geht jedoch etwas die Zeit aus. Ich werde bei Gelegenheit noch einmal unter Matlab-64 Bit testen. Vlt. geht es auch hier über mex, ansonsten muss ich mir die dll noch einmal genauer anschauen. Wie die erste Fehlermeldung besagt hat es ja irgendetwas mit stdcall zu tun. Ich kenne mich nur leider sehr wenig mit dynamic link libraries unter Windows aus, um das auf die Schnelle hinzukriegen. Das bedeutet ein wenig Studium der Microsoft man-pages.
Erfreulich ist aber, dass man den iowarrior unter octave ansteuern kann ... :). Falls jemand Interesse hat, bin ich gerne bereit das mex-File zu teilen.
Falls noch jemand eine Idee hat, wie ich spontan das Problem mit Matlab in 64 Bit lösen könnte, würde ich das gerne noch ausprobieren. Ansonsten wünsche ich schonmal frohe Ostern und vielen Dank für die bisherig Hilfe :).
- Christoph Jung
- Posts: 672
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: Matlab r2011b 64 Bit
Wir haben einige Beispiele (leider nur Simple IO) und so etwas wie ein header-File für Mathlab.
Das ganze lief bei der Erstellung auf einer 64Bit Maschine als 32 Bit.
Das ganze lief bei der Erstellung auf einer 64Bit Maschine als 32 Bit.
- Attachments
-
- MatLab Samples.zip
- (41.39 KiB) Downloaded 720 times
Software developer
Re: Matlab r2011b 64 Bit
Vielen Dank. Leider noch der gleiche Fehler. Welche Version von Matlab wurde denn bei der Erstellung verwendet?
- Christoph Jung
- Posts: 672
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: Matlab r2011b 64 Bit
WIr haben die 32Bit Testversion R2012a verwendet. Dort ging es ohne Probleme.
Andere Frage, wo liegt / liegen die iowkit.dll?
Andere Frage, wo liegt / liegen die iowkit.dll?
Software developer
Re: Matlab r2011b 64 Bit
Ich habe die iowkit.dll im selben Verzeichnis, wie die Test-Skripte. Soll ich die dll in den Windows Ordner legen?
Ich benutze die Matlab Version r2011b 64 Bit. Ob es daran liegt, dass es eine 32 Bit Matlab Version ist kann ich nicht sagen. Ich habe auch leider nicht die Möglichkeit eine 32 Bit Version von Matlab zu installieren.
Ich benutze die Matlab Version r2011b 64 Bit. Ob es daran liegt, dass es eine 32 Bit Matlab Version ist kann ich nicht sagen. Ich habe auch leider nicht die Möglichkeit eine 32 Bit Version von Matlab zu installieren.
- Christoph Jung
- Posts: 672
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: Matlab r2011b 64 Bit
Nein die DLL im selben Ordner wie das Skript lassen. Macht weniger Probleme.
Wenn das Austauschen der DLL und des Header-Files den Fehler nitcht behebt und man Mathlab nicht sagen kann das es 32 Bit sein soll kann ich auch nicht weiterhelfen.
Wenn das Austauschen der DLL und des Header-Files den Fehler nitcht behebt und man Mathlab nicht sagen kann das es 32 Bit sein soll kann ich auch nicht weiterhelfen.
Software developer
Re: Matlab r2011b 64 Bit
Nagut. Falls ich doch noch eine Lösung finden sollte werde ich sie posten. Solange arbeite ich mit Octave. Trotzdem vielen Dank.
Re: Matlab r2011b 64 Bit
Hi,
ist zwar schon etwas länger her seit dem letzten Beitrag, aber der Vollständigkeit halber hier die Lösung: Auf einem Windows x64 System natürlich die 64bit iowkit.dll benutzen. Die DLL muss nicht einmal im Windows\System32 Verzeichnis liegen. Es reicht, wenn sie im Matlab Suchpfad liegt. In den Prototypes (iowproto.m) muss
fcns.calltype{fcnNum}='stdcall';
in
fcns.calltype{fcnNum}='cdecl';
geändert werden. Dann klappt es.
Viel Erfolg
Andreas
ist zwar schon etwas länger her seit dem letzten Beitrag, aber der Vollständigkeit halber hier die Lösung: Auf einem Windows x64 System natürlich die 64bit iowkit.dll benutzen. Die DLL muss nicht einmal im Windows\System32 Verzeichnis liegen. Es reicht, wenn sie im Matlab Suchpfad liegt. In den Prototypes (iowproto.m) muss
fcns.calltype{fcnNum}='stdcall';
in
fcns.calltype{fcnNum}='cdecl';
geändert werden. Dann klappt es.
Viel Erfolg
Andreas
Re: Matlab r2011b 64 Bit
Juhuuu, gibts den Download vielleicht noch irgendwo zu haben??? :) :)Christoph Jung wrote: ↑Thu Mar 28, 2013 3:21 pm Wir haben einige Beispiele (leider nur Simple IO) und so etwas wie ein header-File für Mathlab.
Das ganze lief bei der Erstellung auf einer 64Bit Maschine als 32 Bit.
Ich hab leider einen kleinen Datenverlust gehabt und jetzt fehlt genau diese DLL :'(
- Christoph Jung
- Posts: 672
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: Matlab r2011b 64 Bit
Na klar, in unserem Downloadbereich. https://codemercs.com/downloads/iowarri ... ab_win.zip
Die DLLs sind im jeweiligen Unterordner
Die DLLs sind im jeweiligen Unterordner
Software developer
Re: Matlab r2011b 64 Bit
SEHR COOL! Ganz lieben Dank :)
An alle Matlab user MATLAB>2019 und X64
Ich musste bei der Prototyp Datei (iowarrior.m) erst alle "stdcall" mit "cdecl" austauschen damit ich die .dll laden konnte.
Vielleicht hilft das jemandem :)
An alle Matlab user MATLAB>2019 und X64
Ich musste bei der Prototyp Datei (iowarrior.m) erst alle "stdcall" mit "cdecl" austauschen damit ich die .dll laden konnte.
Vielleicht hilft das jemandem :)