Funktionen aus DLL verwenden



  • Ich hätte da mal eine Frage:

    Ich bin im Moment dabei mit dem K8055 Interface von Vellman zu experimentieren.
    http://www.velleman.be/ot/en/product/view/?id=351346

    Nun gibt es dazu eine DLL zum Download, die alle wichtigen Funktionen zur Steuerung des Boardes enthält. Zu finden auf http://www.velleman.be/ot/en/download/files/. Da gibts auch beispielprojekte für C++, mit denen ich schon rumgebastelt hab, aber in C klappts einfach nicht.

    Nun meine Frage: wie kann ich diese DLL einbinden, um die Funktionen zu nutzen?

    Wäre extrem praktisch wenn jemand weiß wie´s geht, oder wonach ich googlen könnte...

    Gruß, PixelRealm

    P.S.: Ich verwende Dev-CPP



  • PixelRealm schrieb:

    Da gibts auch beispielprojekte für C++, mit denen ich schon rumgebastelt hab, aber in C klappts einfach nicht.

    bechreib mal genauer was nicht geht.
    fehlermeldungen?
    abtürze?



  • also ich hab einfach das C++ Projekt in Dev-CPP reingepackt, in der Headerdatei ein "bool" entfernt, weil das als Variablentyp nicht erlaubt ist. Wenn ich dann eine Funktion aus der Headerdatei verwenden will kommt [Linker Error]: undefined Reference to 'OpenDevice@4' .

    Hier das komplette Listing:

    die main.c:

    #include <stdio.h>
    #include <stdlib.h>
    #include <K8055D_C.h>
    int main(int argc, char *argv[])
    {
      OpenDevice(0);
      getch();
    }
    

    die Headerdatei von der Vellman-Website:

    /************************************************************
    *************************************************************
    ** Microsoft Visual C++ Project for the K8055 USB I/O Card **
    **                                                         **
    **                  Copyright Velleman 2005                **
    **                      www.Velleman.be                    **
    **                                                         **
    **                                                         **
    **                                                         **
    **                       Developed by                      **
    **                      RE-Applications                    **
    **                  www.RE-Applications.be                 **
    *************************************************************
    *************************************************************/
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    #define FUNCTION __declspec(dllexport)
    
    FUNCTION long __stdcall OpenDevice(long CardAddress);
    FUNCTION __stdcall CloseDevice();
    FUNCTION long __stdcall ReadAnalogChannel(long Channel);
    FUNCTION __stdcall ReadAllAnalog(long *Data1, long *Data2);
    FUNCTION __stdcall OutputAnalogChannel(long Channel, long Data);
    FUNCTION __stdcall OutputAllAnalog(long Data1, long Data2);
    FUNCTION __stdcall ClearAnalogChannel(long Channel); 
    FUNCTION __stdcall ClearAllAnalog();
    FUNCTION __stdcall SetAnalogChannel(long Channel); 
    FUNCTION __stdcall SetAllAnalog();
    FUNCTION __stdcall WriteAllDigital(long Data);
    FUNCTION __stdcall ClearDigitalChannel(long Channel);
    FUNCTION __stdcall ClearAllDigital();
    FUNCTION __stdcall SetDigitalChannel(long Channel);
    FUNCTION __stdcall SetAllDigital();
    FUNCTION __stdcall ReadDigitalChannel(long Channel);
    FUNCTION long __stdcall ReadAllDigital();
    FUNCTION long __stdcall ReadCounter(long CounterNr);
    FUNCTION __stdcall ResetCounter(long CounterNr);
    FUNCTION __stdcall SetCounterDebounceTime(long CounterNr, long DebounceTime);
    
    FUNCTION __stdcall Version();
    FUNCTION long __stdcall SearchDevices();
    FUNCTION long __stdcall SetCurrentDevice(long lngCardAddress);
    
    #ifdef __cplusplus
    }
    #endif
    

    Die Headerdatei liegt im Ordner "include" von Dev-CPP, die DLL ebenfalls.

    Mit C++ wär das ganze kein Problem, wenn ich den ganzen Ramsch mit Borland C++ öffne funktionierts ja auch, nur möchte ich das Board mit C verwenden.

    Gruß, PixelRealm



  • ich schätze du brauchst 'ne import library für die dll.
    die, die dabei ist (für borland und/oder msvc) ist nicht mit gcc kompatibel.
    am besten du bleibst beim borland. mit dem kann man ja auch c-programme machen.


Anmelden zum Antworten