====== 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);