Я работаю над вызовом одной библиотеки DLL для C/C++ с JNA. Функциональный API в DLL является коротким DKT_init (имя LPCSTR). Я применил соответствующий java-метод как открытый короткий DKT_init (String name); Но когда я это называю, DLL API возвращает ошибку параметра. Интересно, как сопоставить LPCSTR в JNA? Поскольку LPCSTR является символом cons char *, но String является char *.JNA mapping LPCSTR на платформе Windows
ответ
Вы пробовали отображения его в массив байтов, например:
short DKT_INIT(byte [] nameAsByteArray);
//now you should be able to obtain it like this:
System.out.println(new String(nameAsByteArray).trim());
Строка соответствующее отображение для LPCSTR. JNA преобразует измененные символы UTF16 в буфер с нулевым завершением байтов, используя кодировку платформы по умолчанию.
Вместо этого вы можете попробовать передать явный массив байтов (используя предлагаемое альтернативное сопоставление меток выше), что устранит потенциальную проблему с неправильной кодировкой, например.
byte[] arg = { (byte)'f', (byte)'o', (byte)'o', (byte)0 };
Вы можете изменить кодировку, используемую при настройке системного свойства "jna.encoding".
Вы также должны исключить возможность того, что «LPCSTR» на самом деле является неправильным типом; если функция ожидает буфер, на который он может писать, String не будет работать, и если это на самом деле LPTCSTR, и вы используете UNICODE, тогда вам нужно передать WString.
- 1. JNA не работает на платформе AIX
- 2. Функция VirtualAllocEx в Java JNA mapping
- 3. Программирование на платформе Windows
- 4. Java JNA mapping D2D1CreateFactory от D2D1
- 5. JNA - Процессы Windows запросов
- 6. Type.GetTypeCode на универсальной платформе Windows
- 7. Mono.data.sqlite на платформе Universal WIndows
- 8. Навигация на платформе Universal Windows
- 9. Python уведомлений на платформе Windows,
- 10. JNA mapping для передачи в/из буфера функции winapi
- 11. JNA Keyboard Hook in Windows
- 12. JNA: __stdcall ESP коррупция
- 13. Управление выводом DTR и RTS последовательного порта на платформе Windows C на платформе Windows
- 14. Можно ли использовать двумерные массивы в JNA Mapping?
- 15. Облако среды на платформе Windows Azure
- 16. Ошибка Wireshark Disscetor на платформе Windows
- 17. Connect Node.js с Oracle на платформе Windows
- 18. Использование libVLC для Android на платформе Windows
- 19. Практическое руководство: Threading на платформе Windows (C++)
- 20. статическая библиотека на платформе Windows, вопрос
- 21. Как изменить ионный счетчик на платформе Windows
- 22. Распознавание речи/речи на платформе Windows
- 23. Коннектор PostgreSQL с PHP на платформе Windows
- 24. Titanium для разработки iOS на платформе Windows
- 25. Как добавить модули nginx на платформе windows?
- 26. Построение объектно-кода c на платформе Windows
- 27. Как использовать сигналы C++ на платформе Windows
- 28. getpid в COBOL на платформе Windows
- 29. IMSI на платформе Windows Phone 7?
- 30. Поддержка фигур на платформе Boot2Docker/Windows