|
|
|
JNA и dll написана на "С"
|
|||
|---|---|---|---|
|
#18+
Здравствуйте коллеги, Есть dll написана "С", в нём есть функция: int Deposit (int Handle, NOTESINFO *Notes) Параметр NOTESINFO ( он OUT параметр ) имеет след структуру: typedef struct NOTESINFO { long amount; char currency[4]; long counter; long totPieces[64]; long denomination[64]; char code[64][4]; } Написал класс: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. и класс: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. При выполнении выдаёт ошибку: java.lang.IllegalArgumentException: Unsupported argument type mc.NOTESINFO at parameter 1 of function Deposit Помогите пожалуйста как решить этот вопрос!!! P.S. На Delphi код такой работает всё корректно: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2015, 14:48 |
|
||
|
JNA и dll написана на "С"
|
|||
|---|---|---|---|
|
#18+
levon.d.g, смотри Код: java 1. 2. 3. и сюда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2015, 15:03 |
|
||
|
JNA и dll написана на "С"
|
|||
|---|---|---|---|
|
#18+
am_sasa, Написал вот так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. Выходит ошибка: java.lang.NullPointerException Process exited with exit code 0. что я делаю не так? вроде всё правильно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2015, 16:57 |
|
||
|
JNA и dll написана на "С"
|
|||
|---|---|---|---|
|
#18+
Заметил если убрать из класса массивы то ошибка исчезает! т.е. оставить только вот так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 08:26 |
|
||
|
JNA и dll написана на "С"
|
|||
|---|---|---|---|
|
#18+
levon.d.g, если вместо массивов заведешь переменные, то все будет работать, типа... Код: java 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 09:34 |
|
||
|
JNA и dll написана на "С"
|
|||
|---|---|---|---|
|
#18+
am_sasa, Написал вот так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. Выдаёт ошибку: Exception in thread "main" java.lang.Error: Invalid memory access at com.sun.jna.Native.invokeInt(Native Method) at com.sun.jna.Function.invoke(Function.java:383) at com.sun.jna.Function.invoke(Function.java:315) at com.sun.jna.Library$Handler.invoke(Library.java:212) at com.sun.proxy.$Proxy0.Deposit(Unknown Source) at mc.testapi.main(testapi.java:112) Process exited with exit code 1. Мозг скоро взорвётся, Помогите пожалуйста!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 15:49 |
|
||
|
JNA и dll написана на "С"
|
|||
|---|---|---|---|
|
#18+
levon.d.g, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. размер блока= 4 + 4*1 + 4 + 4*64 + 4*64 + 64*4 пока не напишешь структуру такого размера ничего не получится. или попробуй Код: java 1. может получится, не уверен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 16:02 |
|
||
|
JNA и dll написана на "С"
|
|||
|---|---|---|---|
|
#18+
только не забудь Код: java 1. а цифирки проверь, я на глаз считал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 16:09 |
|
||
|
JNA и dll написана на "С"
|
|||
|---|---|---|---|
|
#18+
am_sasa, Сделал вот так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Заработало, но ответ иногда корректный: Result Deposit: 1 Result amount: 0 Result counter: 0 Process exited with exit code 0. а иногда "через раз" бывает вот так: Result Deposit: 1 Result amount: 0 Result counter: 0 Process exited with exit code -1073740940. из-за чего возникает такая ошибка? P.S. На Delphi такой ошибки не возникает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2015, 09:46 |
|
||
|
JNA и dll написана на "С"
|
|||
|---|---|---|---|
|
#18+
Получилось сделать вот так: двумерный массив Код: java 1. объявил вот так: Код: java 1. В итоге параметры все объявил вот так: Код: java 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 12:08 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=129&tid=2125371]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 393ms |

| 0 / 0 |
