Hi vergisses,
Also in der Dokumentation zum Treiber ist die Funktion wie folgt definiert: short OpenLibrary(LPSTR dllnmae, __PX_FAR *interfac, short sizeof(interface));
Ich habe die header files IFRAME.h und PXC200.h
(Die Framegrabberkarte heißt PXC200 daher der name PXC200.h!!)angeschaut und da steht die Funktion wie folgt
short OpenLibrary(char __PX_FAR *file, void __PX_FAR *iface,short count); definiert.
1. Parameter ist dll-Name also FRAME_GARBBER.DLL
2. Parameter ist void
define makro #define __PX_FAR für den Präprozessor..
Bei wrapped-Funktion brauche ich doch nicht die Parameterübergabe ich brauche lediglich den Rückgabewert!! Oder??
Also mein Funktionsaufruf würde in auf java-Seite in "Tools.java" folgendermaßen definiert: native short jOpenLibrary();
und in ToolsImlp.c wird so ausschauen:
JNIEXPORT jshort JNICALL
Java_Tools_jOpenLibrary(JNIEnv *env, jobject obj){
return (OpenLibrary(FRAME_GRABBER.DLL, &pxc, sizefo(pxc));
}
Stimmts??
Die Frage ist, was wenn die Funktion so aussieht:
FRAME __PX_FAR *AllocateBuffer(short dy, short dy, short type);
wobei FRAME eine Struktur ist und kein primitiver Datentyp und ein Zeiger auf die Funktion??
typedef struct tagFRAME{
struct tagFRAME __PX_FAR *next;
short dx,dy;
short type;
unsigned char user_type;
unsigned char dma_type;
BUFFERDATA user;
BUFFERDATA dma;
void (__PX_CALL *close)(struct tagFRAME __PX_FAR *);
}FRAME;
Gruss DeepThinking