Matlab r2011b 64 Bit

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
nerdOmat
Posts: 6
Joined: Wed Mar 27, 2013 4:50 pm

Matlab r2011b 64 Bit

Post by nerdOmat »

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?
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Matlab r2011b 64 Bit

Post by Christoph Jung »

Wurde schon versucht auf dem 64Bit System die 32Bit komponenten dafür zu nutzen?
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
nerdOmat
Posts: 6
Joined: Wed Mar 27, 2013 4:50 pm

Re: Matlab r2011b 64 Bit

Post by nerdOmat »

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.
nerdOmat
Posts: 6
Joined: Wed Mar 27, 2013 4:50 pm

Re: Matlab r2011b 64 Bit

Post by nerdOmat »

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 :).
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Matlab r2011b 64 Bit

Post by Christoph Jung »

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.
Attachments
MatLab Samples.zip
(41.39 KiB) Downloaded 533 times
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
nerdOmat
Posts: 6
Joined: Wed Mar 27, 2013 4:50 pm

Re: Matlab r2011b 64 Bit

Post by nerdOmat »

Vielen Dank. Leider noch der gleiche Fehler. Welche Version von Matlab wurde denn bei der Erstellung verwendet?
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Matlab r2011b 64 Bit

Post by Christoph Jung »

WIr haben die 32Bit Testversion R2012a verwendet. Dort ging es ohne Probleme.
Andere Frage, wo liegt / liegen die iowkit.dll?
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
nerdOmat
Posts: 6
Joined: Wed Mar 27, 2013 4:50 pm

Re: Matlab r2011b 64 Bit

Post by nerdOmat »

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.
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Matlab r2011b 64 Bit

Post by Christoph Jung »

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.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
nerdOmat
Posts: 6
Joined: Wed Mar 27, 2013 4:50 pm

Re: Matlab r2011b 64 Bit

Post by nerdOmat »

Nagut. Falls ich doch noch eine Lösung finden sollte werde ich sie posten. Solange arbeite ich mit Octave. Trotzdem vielen Dank.
AndreasS
Posts: 5
Joined: Thu Sep 15, 2005 2:11 pm
Location: Luebeck

Re: Matlab r2011b 64 Bit

Post by AndreasS »

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
delirio
Posts: 7
Joined: Mon Oct 11, 2010 12:38 pm

Re: Matlab r2011b 64 Bit

Post by delirio »

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.
Juhuuu, gibts den Download vielleicht noch irgendwo zu haben??? :) :)
Ich hab leider einen kleinen Datenverlust gehabt und jetzt fehlt genau diese DLL :'(
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Matlab r2011b 64 Bit

Post by Christoph Jung »

Na klar, in unserem Downloadbereich. https://codemercs.com/downloads/iowarri ... ab_win.zip
Die DLLs sind im jeweiligen Unterordner
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
delirio
Posts: 7
Joined: Mon Oct 11, 2010 12:38 pm

Re: Matlab r2011b 64 Bit

Post by delirio »

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 :)
Post Reply