Использование Dll

  • Автор темы -
  • Дата начала

Гость
#1
Я знаю что данная ошибка муштыровалась тысячу раз , но пусть я буду тысяче первый , зато при вашей помощи усвою JNI на практике :).
Есть dll , на чем писанна я не знаю, скажем ее имя PinPad.dll , есть описание(вход указан) к ней, напрмер есть методы такие как:
int PinPad_start(char port, int baudRate)
int PinPad_stop()
Как мне эти методы вызвать в java? И как узнать что данная dll поддерживат JNI?
Вот мой тестовый кодик по подключению(извиняюсь что не пользуюсь вводом кода, на проксе javascript блокируется, если дадите блоки какие исползуются то мои вопросы и ответы будут привликательнее)
Код:
public class PinPad {

/**
* @param args
*/
//PinPad.dll
public native int PinPad_startt(char pszCom,long LBaundRate, char pParity,char pByte, char pStopBite);
public native int PinPad_stop();

static
{
try
{
System.load("c:\\PinPad.dll");
}
catch(Exception e)
{
System.out.prinltn(e);
}
}
public static void main(String[] args) 
{
try
{
PinPad pin = new PinPad();
pin.PinPad_DisablePort();//здесь генерится исключение
}
catch(Exception e)
{
System.out.println(e);
}
catch(UnsatisfiedLinkError ULE)
{
ULE.printStackTrace();
}


}

}
Заранее благодарен.
 

Гость
#3
вчитайтесь в сообщение для начала , прокся порезала половину инструментов , включая кнопку добавления тегов кода, я попросил участников чтоб дали мне эти теги, и я их начну использовать..
например:
[TAG=]
public static void main([])
{
}
[/TAG]
 

Гость
#5
честно так и не разобрался с JNI , я просто не видел разнообразие примеров , везде одно и тоже :вывод строки.. Кто нить может мне уделить время , и заняться моим обучением :) , а то я немного дубовать :blink:
 
C

Creo

Гость
#6
Что бы разабраться в JNI надо достаточно хорошо знать C++. Насколько хорошо ты его знаешь? Если ты не очень хорошо знаешь C++, но хочешь досканально разабраться во всех возможностях Java, JNI это чуть ли не самое последние, что тебе следовало бы изучать. По той причине, что джава задумывалась, как кроссплатформенный язык, а JNI зразу "обрубает" данную возможность. Это описание JNI http://java.sun.com/j2se/1.5.0/docs/guide/...pec/jniTOC.html, вот тут по идее примеры JNI examples
 

Гость
#7
Счас я проштудировал все что мне надо сделать .. и понял , что ява в моих задачах как камень привязанный к ноге ..
Мне надо реализовать управление устройств присоединеных по USB, и по COM порту. Половину устройств имеют сишные библиотеки(dll). Так что блин придется в си ударятся. :blink: :)
 

Kmet

Well-Known Member
Java Team
25.05.2006
1 036
8
#8
не советовал бы учить что либо по примерам. и следует осторожно относится к русскоязычным статьям. толковых ресурсов по яве в рунете совсем мало.
обычно достаточно информации на sun.com. уровень материалов там очень высок + спеки. но есть один минус, человеку который продумывал стуктуру портала и навигацию надо руки об батарею ровнять.

http://java.sun.com/j2se/1.5.0/docs/guide/jni/
http://java.sun.com/docs/books/jni/

Еще есть куча решений для работы с нативными библиотеками JNA, JNative, j-interop(для COM) и тд.
 

Гость
#9
Спасибо за ссылки , изучаю , понравилось про руки.. :)
ПС: Си ни миллиметра не знаю..
 

Kmet

Well-Known Member
Java Team
25.05.2006
1 036
8
#10
Счас я проштудировал все что мне надо сделать .. и понял , что ява в моих задачах как камень привязанный к ноге ..
Мне надо реализовать управление устройств присоединеных по USB, и по COM порту. Половину устройств имеют сишные библиотеки(dll). Так что блин придется в си ударятся. huh.gif mad.gif
я бы использовал JNA (https://jna.dev.java.net/). кривая вхождения для Си гораздо круче. Хотя конечно да, ява и железо не самая привычная связка.
 
C

Creo

Гость
#11
Смотрел JNA, но мне кажется, что многие сишные понятия выглядят очень синтетически, неестественно... Зато с другой стороны ни строчки на С, сплошная Java. В любом случае мне кажется С придётся и так и так учить... Так что на чём всё это добро реализовать, решать тебе... Лично мне JNI всё таки ближе, хотя JNA не разу не пользовался, просто такое вот у меня первое впечатление...