Daten aus Datei über JNA mittels dll holen

Eimsbush87

Grünschnabel
Hallo Gemeinde,

ich stehe im Moment vor einem Problem welches mich die letzten 3 Tage heftigst beschäftigt und komme einfach nicht auf eine vernünftige Lösung

Ich möchte mittels JNA über eine dll welche ich schon erfolgreich eingebunden habe auf Daten in einer Datei zugreifen. Hierbei ermöglicht die dll den Zugriff auf die Daten.

Ich bin nun schon soweit, dass ich einzelne Funktionen aufrufen kann und hierfür auch die Werte bekomme, jedoch schaffe ich es nicht an Werte heran zu kommen dessen Variable (aus java) vom Typ char[256] als Pointer übergeben werden sollen, sodass ich von der dll einen nullterminierten String zurückbekomme.
Anbei ausschnitte aus dem Quellcode

Das hier geht
Code:
// Zugriffsfunktion der dll
int GetCoordCount();

// Ausgeben der Werte
System.out.println("\nNumber of measure points: "+hy2nc.INSTANCE.GetDataCount()); // hier passt das Ergbnis

für die nachfolgende Funktion sollte man mit C/C++ über die dll mit
long GetType_C(char &type);
rankommen.

Bei mir sieht das in java so aus und geht nicht
Code:
// Zugriffsfunktion der dll
int GetType_C(byte [] type);

// Ausgeben der Werte
byte[] type;
int bufferSize = 256;
type = new byte[bufferSize];
System.out.println("\nGetType reply: "+hgy2nkc.INSTANCE.GetType_C(type)); // hier bekomme ich als reply message einen code der im Handbuch der dll sagt: erfolgreiche Ausführung
System.out.println("Data Type: "+type); // hier bekomme ich: Data Type: [B@dd5b
// und das passt nicht zu dem was herauskommen sollte

wäre wirklich super wenn mir da jemand helfen könnte!!

Vielen Dank im Voraus!
 
probier mal statt
Java:
System.out.println("Data Type: "+type);

lieber
Java:
System.out.println("Data Type: " + new String(type));
oder
Java:
System.out.println(Arrays.asList(b));

Denn mit dieser Zeile gibst du (so wie sie bei dir im Code steht) den Hash-Code des byte-Arrays 'type' aus, nicht den Inhalt.
 
Vielen Dank genodeftest,

du bist spitze! Ich habe es mit
Java:
System.out.println("Data Type: " + new String(type));

hinbekommen!
 

Neue Beiträge

Zurück