WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Probleme beim Laden von DLL Dateien mittels loadlibrary

 

Mobman
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 03.08.11
Wohnort: ---
Version: MATLAB 7.11.1 (R2010b) SP1
     Beitrag Verfasst am: 08.08.2011, 11:48     Titel: Probleme beim Laden von DLL Dateien mittels loadlibrary
  Antworten mit Zitat      
Hallo Leute,

ich versuche DLL Dateien mittels loadlibrary zur Laufzeit zu laden, leider tritt dabei immer folgender Fehler auf.

Zitat:

>> loadlibrary ('... .dll', '... .h');
??? Error using ==> loadlibrary at 477
There was an error loading the library "... .dll"
Die angegebene Prozedur wurde nicht gefunden.

Caused by:
Error using ==> loaddefinedlibrary
Die angegebene Prozedur wurde nicht gefunden.


Auch habe ich bereits die Forensuche genutzt, konnte aber keine Lösung finden.
Ich verwende Version 7.11.1 (R2010b) SP1. Jemand sagte mir, dass er in einer älteren Version mal die Meldung gelesen hatte das bestimmte Funktionalitäten in Zukunft nicht mehr möglich sind. Betrifft es auch dieses Problem hier? Hat es etwas mit den MEX Dateien zu tun?

Danke und Gruß
mobman
Private Nachricht senden Benutzer-Profile anzeigen


Mobman
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 03.08.11
Wohnort: ---
Version: MATLAB 7.11.1 (R2010b) SP1
     Beitrag Verfasst am: 09.08.2011, 17:04     Titel:
  Antworten mit Zitat      
Hat sich scheinbar erledigt, wie es aussieht haben andere davon abhängige DLL-Bibliotheken gefehlt, ohne die es zu Fehlern kam.
Private Nachricht senden Benutzer-Profile anzeigen
 
Mobman
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 03.08.11
Wohnort: ---
Version: MATLAB 7.11.1 (R2010b) SP1
     Beitrag Verfasst am: 22.08.2011, 16:28     Titel:
  Antworten mit Zitat      
Hallo Leute,

ich habe erneut ein Problem. Und zwar möchte ich per DLL Dateien eine C-Funktion aufrufen; diese Funktion liest Binärdaten aus einer Log-Datei und gibt diese als Rückgabewert zurück.
Folgend das Skript:

1. Datei
Code:

clc;

log_file    = 'c:\... .log';
dll_file    = 'c:\... .dll';
header_file = 'c:\... .h';

result = matlab_converter(log_file, dll_file, header_file)
 


2. Datei
Code:

function result = matlab_converter(log_file, dll_file, header_file)

    if libisloaded('...')
    else
        loadlibrary(dll_file, header_file);
    end;
   
   StringLenght = 255;
   
    handle = calllib('...', '...Open', log_file)
   
    handleNo  = libpointer('int32Ptr');
    type      = libpointer('int32Ptr');
   
    n     = int8(zeros(1,StringLenght));
    value = libpointer('int8Ptr', n);
   
   size = libpointer('int32Ptr',StringLenght);
   
   m         = int8(zeros(1,8));
    timestamp = libpointer('int8Ptr', m);
   
    recordNo = 0;
    while recordNo <= 1
   
        get = calllib('...', '...Get', handle, recordNo, handleNo, type, value, size, timestamp)
       
        if type == 1
            value = typecast(value, 'int32');
        elseif type == 2
            value = typecast(value, 'double');
        elseif type == 4
            value = typecast(value, 'cstring');
        end;
           
        if get ~= 0
            break;
        end;
   
        recordNo = recordNo + 1;
   
    end;
   
    calllib('...', '...Close', handle)
   
    %unloadlibrary('...');
   
result = 1;

 


Das Einbinden und nutzen der Funktionen läuft schon mal, ein bisher großer Erfolg! Smile
Der Fehler tritt dann aber beim ersten Aufruf der GET-Funktion auf:
Zitat:

??? Error using ==> calllib
Pointer types must match data type.

Error in ==> matlab_converter at 51
get = calllib('...', '...Get', handle, recordNo,
handleNo, type, value, size, timestamp)

Error in ==> test at 28
result = matlab_converter(log_file, dll_file, header_file)


Es liegt mit Sicherheit an den per Pointer deklarierten Variablen, da liegt meine große Unsicherheit, da ich nicht genau weiss, wie ich die für einen korrekten Aufruf verwenden muss. Die GET-Funktion ist folgendermaßen in der Header-Datei definiert:
Code:

...
   int         Index,
   unsigned long   RecordNo,
   unsigned        *   HandleNo,
   int           *  Type,
   void              *  Value,
   int               *  Size,
   unsigned char   Time [8]
...
 


Danke!!

Lieben Gruß
mobman
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.