Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Использование Dll
Форум программистов > Системное программирование > Java
Кирзач
Я знаю что данная ошибка муштыровалась тысячу раз , но пусть я буду тысяче первый , зато при вашей помощи усвою JNI на практике smile.gif.
Есть 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();
        }
        
    
    }

}

Заранее благодарен.
Король
оформи код нормально
Кирзач
вчитайтесь в сообщение для начала , прокся порезала половину инструментов , включая кнопку добавления тегов кода, я попросил участников чтоб дали мне эти теги, и я их начну использовать..
например:
[TAG=]
public static void main([])
{
}
[/TAG]
Creo
Кирзач
почитай это, может поможет ]]>http://www.codenet.ru/webmast/java/jcc.php]]>.
Кирзач
честно так и не разобрался с JNI , я просто не видел разнообразие примеров , везде одно и тоже :вывод строки.. Кто нить может мне уделить время , и заняться моим обучением rolleyes.gif , а то я немного дубовать blink.gif
Creo
Что бы разабраться в JNI надо достаточно хорошо знать C++. Насколько хорошо ты его знаешь? Если ты не очень хорошо знаешь C++, но хочешь досканально разабраться во всех возможностях Java, JNI это чуть ли не самое последние, что тебе следовало бы изучать. По той причине, что джава задумывалась, как кроссплатформенный язык, а JNI зразу "обрубает" данную возможность. Это описание JNI ]]>http://java.sun.com/j2se/1.5.0/docs/guide/...pec/jniTOC.html]]>, вот тут по идее примеры ]]>JNI examples]]>
Кирзач
Счас я проштудировал все что мне надо сделать .. и понял , что ява в моих задачах как камень привязанный к ноге ..
Мне надо реализовать управление устройств присоединеных по USB, и по COM порту. Половину устройств имеют сишные библиотеки(dll). Так что блин придется в си ударятся. huh.gif mad.gif
Kmet
не советовал бы учить что либо по примерам. и следует осторожно относится к русскоязычным статьям. толковых ресурсов по яве в рунете совсем мало.
обычно достаточно информации на 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) и тд.
Кирзач
Спасибо за ссылки , изучаю , понравилось про руки.. unsure.gif
ПС: Си ни миллиметра не знаю..
Kmet
Цитата(Кирзач @ 24:10:2008 - 10:22) *
Счас я проштудировал все что мне надо сделать .. и понял , что ява в моих задачах как камень привязанный к ноге ..
Мне надо реализовать управление устройств присоединеных по USB, и по COM порту. Половину устройств имеют сишные библиотеки(dll). Так что блин придется в си ударятся. huh.gif mad.gif


я бы использовал JNA (https://jna.dev.java.net/). кривая вхождения для Си гораздо круче. Хотя конечно да, ява и железо не самая привычная связка.
Creo
Смотрел JNA, но мне кажется, что многие сишные понятия выглядят очень синтетически, неестественно... Зато с другой стороны ни строчки на С, сплошная Java. В любом случае мне кажется С придётся и так и так учить... Так что на чём всё это добро реализовать, решать тебе... Лично мне JNI всё таки ближе, хотя JNA не разу не пользовался, просто такое вот у меня первое впечатление...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.