Hallo hab hier eine Funktionsdeklaration!
typedef void (_stdcall *AN21XXOPENDEVICE)(unsigned char ucDeviceNumber, char* szDriverName, char* szID, char* szKeyword);
Was muß ich aber jetzt schreiben wenn ich diese benutzen will!?
Was muß ich beim Aufruf alles weglassen!? Kann mir jemand ein Beispiel machen?
Thanks @ all
Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge
Hoppla, da habe ich wohl das "typedef" übersehen.
typedef void (_stdcall *AN21XXOPENDEVICE)(unsigned char ucDeviceNumber, char* szDriverName, char* szID, char* szKeyword);
HINSTANCE m_hLibInstance;
AN21XXOPENDEVICE fpOpenDevice;
m_hLibInstance = LoadLibrary("an21xx.dll");
fpOpenDevice = (AN21XXOPENDEVICE)GetProcAddress(m_hLibInstance, "OpenDevice");
(*fpOpenDevice)(0, "EZUSB", "Meier", "00A7325BC901" );
Die "typedef"-zeile wird i.a. nicht direkt im sourcecode stehen, sondern z.b. per:
#incluse "USB_Interface.h"
(ebenso, wie auch all die anderen typedefs, etc.) eingebunden.
LoadLibrary und GetProcAddress brauchen nur einmal am anfang, in der initialisierungsphase aufgerufen werden (GetProcAddress nur einmal für jede verwendete funktion).
Das problem mit den mehreren *.cpp dateien stellt sich hier nicht denn die funktionen kommen aus einer DLL. Wie und was aus der DLL kommt, steht in der entsprechenden *.h datei und evtl. in der dokumentation (hier: der typedef in der *.h datei und der parameter "OpenDevice" für GetProcAddress() im quelltext von z.b. "USB_Interface.cpp").
Hat man wirklich *.cpp dateien mit klassen, variablen und funktionen, die in anderen *.cpp dateien verwendet werden sollen, so müssen alle extern verwendeten klassen, variablen und funktionen in *.h dateien deklariert werden. Diese *.h dateien werden dann in jeder *.cpp datei, die etwas von den dort deklarierten sachen verwendet per #include eingebunden.
Ein c/c++-tutorial wäre dazu wirklich nicht schlecht.
Z.b.:
deklaration, kommt in *.h, z.b. "foo.h"
int foo(int i);
bedeutet: es gibt (irgendwo) eine funktion mit dem namen "foo", die als parameter eine int-zahl erwartet und auch eine int-zahl als ergebnis zurück gibt.
die implementierung kommt in *.cpp, z.b. "foo.cpp". Name ist egal, muss nur im projekt vorhanden sein
int foo(int i){
return i*i;
}
jetzt kommt die verwendung in einer anderen *.cpp datei
#include "foo.h"
...
int i=foo(10);
mr.escape