Üdv!
A helyzet az, hogy a Java Native Access (JNA) nevű könyvtárral szórakozok, és ebben kellene a segítségetek:
Van egy C-ben íródott DLL, amit nem én írtam, tehát nem tudok beleírni, de ez alapból nem is gond. Mindenesetre az egyik ebben a könyvtárban definiált függvény az egyik argumentumában pointerre mutató pointert vár. Pontosabban, van egy struktúrákból álló tömb, és a függvény ennek az első elemére állítja azt a pointert, amire az argumentumként kapott pointer mutat.
Valahogy sehogy sem akar sikerülni ezt átírni Java nyelvre. A struktúra típust ugye leszármaztattam a com.sun.jna.Structure osztályból, viszont hogy ebben az esetben pontosan hogyan kell csinálni, arra nem találtam megoldást, pedig próbáltam mindenhogy:
1. my_struct **data -> MyStruct[]
2. my_struct **data -> MyStruct.ByReference[]
3. my_struct **data -> MyStruct.ByValue[]
A 2. esetben az volt a baj, hogy a kapott tömbnek csak az első eleme volt megfelelő, a többi nem, mert ahogy az a debug sorokból kiderült, a struktúrák nem egymás után szerepeltek a memóriában. Ezt mondjuk értem miért van.
Viszont az 1. és 3. esetben számomra teljeen értelmezhetetlen hibaüzenet: Exception in thread "main" java.lang.IllegalArgumentException: Structure array elements must use contiguous memory (bad backing address at Structure array index 1)
Sajnos a kód túl összetett ahhoz, hogy bemásoljam ide, de minden segítségnek nagyon örülnék!
Előre is kösz!
- 940 megtekintés