1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Problem mit Datentyp in C/C++ und JNI

  • Stephe
  • 23. April 2009 um 16:12
  • Unerledigt
  • Stephe
    24
    Stephe
    Mitglied
    Reaktionen
    43
    Punkte
    6.038
    Beiträge
    968
    • 23. April 2009 um 16:12
    • #1

    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:

    Zitat

    error C2664: 'void (PUINT)': Konvertierung des Parameters 1 von 'jintArray' in 'PUINT' nicht möglich

    Konkret geht es dabei um diesen Teil:

    Code
    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ß):

    Code
    typedef void (__stdcall *PFNSETALLDATA)(PUINT dwData);

    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 :frowning_face:


    EDIT: Konnte es doch lösen:

    Code
    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 :winking_face:

    3 Mal editiert, zuletzt von Stephe (23. April 2009 um 20:31)

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern