![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| RuselSt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 27.10.2008 Репутация: нет Всего: нет |
Всем привет. Уже пару дней пытаюсь решить такую проблему:
есть си-шная dll, необходимо в ней запустить функцию, которая по входным данным генерирует файл-изображение. Использую jna, вызов функции делается, файл создается, проблема в том, что первый вызов проходит нормально, а второй вызов этой функции приводит к краху VM. Вот код вызова: public class RunBarCode { private static final String image = "image\\q1.bmp"; private static final String image2 = "image\\q2.bmp"; private static final String dllNameGBD = "dll\\gbd_bc"; public interface Gbd_bc extends Library { Gbd_bc INSTANCE = (Gbd_bc)Native.loadLibrary(dllNameGBD, Gbd_bc.class); Gbd_bc SYNC_INSTANCE = (Gbd_bc)Native.synchronizedLibrary(INSTANCE); void get_bc_f(String data, int size, String file, String result); void get_bc_bin(String data, int size, PointerByReference buffer, IntByReference buff_size, String result); } public static void main(String[] args) throws IOException { Gbd_bc libGbd = Gbd_bc.INSTANCE; String resultGbd = ""; libGbd.get_bc_f("121212345678241108123456", 200, image, resultGbd); libGbd.get_bc_f("121212345678241108123455", 200, image2, resultGbd); System.out.println("Ok"); }} После второго вызова get_bc_f, выдается: # # An unexpected error has been detected by Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c910cae, pid=5612, tid=5264 # # Java VM: Java HotSpot Client VM (11.0-b15 mixed mode, sharing windows-x86) # Problematic frame: # C [ntdll.dll+0x10cae] # # An error report file with more information is saved as: # C:\JavaProjects\JNIFirst\hs_err_pid5612.log # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # Кто-нибудь сталкивался с такой проблемой? может проблема в неправильной работе си-шной библиотеки? |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Очень может быть, что Си виноват - хорошо бы код посмотреть на его стороне.
Там же со строками надо быть аккуратнее. Я даже в статье писал когда-то - http://antonsaburov.narod.ru/articles/jni.html
|
|||
|
||||
| RuselSt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 27.10.2008 Репутация: нет Всего: нет |
Все решил проблему, вместо одного из String надо было использовать char[]:
void get_bc_f(String data, int size, String file, char[] result); void get_bc_bin(String data, int size, PointerByReference buffer, IntByReference buff_size, char[] result); это как-то связано с кодом на Си, а конкретнее не разобрался. Спасибо |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |