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=351346Nun 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.