Ich habe eine DLL, die ich über Java ansprechen will. Dazu muss ich mir dieses schöne JNI-Zeugs basteln. Das funktionierte bei der alten Version der DLL ganz gut, jetzt hab ich aber ne neue Version, wo ein 32bit Integer-Array übergeben werden soll. Da hauts mich jetzt mit den Datentypen auf, nochdazu bin ich in C/C++ nicht wirklich sattelfest.
Bei Kompilieren des VS-Projekts komm ich zu dieser Fehlermeldung:
Zitaterror C2664: 'void (PUINT)': Konvertierung des Parameters 1 von 'jintArray' in 'PUINT' nicht möglich
Konkret geht es dabei um diesen Teil:
JNIEXPORT void JNICALL Java_DMX_DMXController_setAllData(JNIEnv *env, jobject c, jintArray data)
{
theApp.SetAllData(data);
}
SetAllData wird im Header-File so definiert (wobei ich eben den richtige Datentyp nicht weiß):
Die vorige Methode nahm einfach nur einen long Typ, das wurde einfach mit DWORD definiert, aber bei dem hier weiß ich nicht weiter, auch das JNI Handbuch hilft mir nicht weiter
EDIT: Konnte es doch lösen:
typedef void (__stdcall *PFNSETALLDATA)(int * dwData);
__________________________________________
JNIEXPORT void JNICALL Java_DMX_DMXController_setAllData(JNIEnv *env, jobject c, jintArray data)
{
long *int1;
int1 = (long *)malloc(sizeof(long)*512);
env->GetIntArrayRegion(data,0,512,int1);
theApp.SetAllData((int *)int1);
}
Alles anzeigen
Wieder was gelernt