Benutzer-Werkzeuge

Webseiten-Werkzeuge


matlab:mit_matlab_auf_eine_dll_zugreifen

Dies ist eine alte Version des Dokuments!


auf eine DLL von Matlab zugreifen

Um mit der Software Matlab auf eine DLL zuzugreifen, haben die Ersteller des Programms folgende Funktionen eingebaut:

  • loadlibrary
  • unloadlibrary
  • libisloaded
  • calllib
  • libfunctionsview, libfunctions, …

Als Ausgangsbasis muss eine DLL Datei vorliegen, sowie eine dazugehörige Headerdatei mit der Endung *.h die die exportierten Funktionsaufrufe beschreibt.

Nun kann mit folgendem Aufruf die DLL geladen werden

 strDLL = 'leere_DLL';
 loadlibrary( strDLL );

zum Schließen wird

 unloadlibrary(strDLL);

aufgerufen. Etwas ausführlicher, mit Prüfung ob die DLL schon (oder noch) geöffnet ist, sieht das so aus:

  strDLL = 'leere_DLL';
  %strDLL = 'hs3';
  if ~libisloaded( strDLL )
    loadlibrary( strDLL );
    pause( 0.2 );
    if ~libisloaded( strDLL )
        error( [ 'Konnte die DLL nicht laden: ' , strDLL ] )
    else
        disp 'DLL geladen';
    end
  end
 % eigener code
 if libisloaded( strDLL )
    unloadlibrary(strDLL);
    disp 'DLL getrennt';
 end

Der Zugriff auf eine Funktion geschieht dann wie folgt:

 A=100
 b=23
 c = calllib(strDLL, 'AddNumbers', A, b)

Sollen mehrere Parameter zurückgegebn werden, so muss eine DLL-Funktion mit Pointern übergeben werden. An den Adressen werden dann die Rückgabewerte von der DLL übergeben.

 [c1, c2, c3] = calllib(strDLL, 'SumAndSquare', A, b)

Jedoch verarbeitet MAtlab die Zuweisung wie gewohnt, so dass links vom Gleichheitszeichen die Ergebnisse stehen!

Die zur DLL gehörende Headerdatei enthält:

 extern "C" double AddNumbers (double a, double b) ;
 extern "C" double SumAndSquare (double *a, double *b);
matlab/mit_matlab_auf_eine_dll_zugreifen.1326287360.txt.gz · Zuletzt geändert: (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki