Micha: DLL mit JNA nutzen; Problem mit Referenzvariablen

Beitrag lesen

Hallo Daniel Thoma,

der Tip war Gold wert ;-) Gelöst habe ich es aber (scheinbar) etwas anders:

  
        int GetMeasuredValues(int portId,  
                 int in0, int in1, int in2, int in3, int in4, int in5, int in6,  
                 ByReference out0,  
                 ByReference out1, ByReference out2,  
                 ByReference out3, ByReference out4,  
                 ByReference out5, ByReference out6  
        );  
  
der Rückgabewert ist weiterhin int, da dieser angibt, ob es einen Fehler beim ermitteln der Werte gab. Die "out" Variablen habe ich, wie Du gesagt hattest, mit ByReference deklariert in der Schnittstelle. Der Aufruf erfolgt nun via:  
  
[code lang=java]int returnCode = lib.GetMeasuredValues(0, 6, 3, 0, 0xFF, 0xFF, 0, 0, iref0, iref1, iref2, iref3, iref4, iref5, iref6); 

wobei die irefX IntByReference-Typen sind. Auf diese irefX kann ich nachdem Aufruf mit getValue() den Wert holen, so wie Du auch geschrieben hattest.

Eine Frage hätte ich noch. Die Pointer-Klasse ist dann dazu da, (eigene) Objekte aus einer DLL-Funktion zu erhalten, wenn diese keine Primitive zurück liefert. Ist das korrekt?

Ansonsten nochmal vielen Dank für Deine schnelle Hilfe!

Mit freundlichem Gruß
Micha

--
simple JavaScript Spiele: Snake, MineSweeper, Sudoku oder Tetris