Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Связка Java + MVC++


Автор: BuggyDdd 25.12.2007, 16:25
Хочу сделать связку Java с dll от MVC++. Пишу на NetBeans
Пишу класс:
Код

package my;

public class AddToStream {
    
    AddToStream()
    {
        System.loadLibrary("AddToStream");
    }
    
    public native int addStream(String srcFile, String dstFile);
}


потом делаю javac AddToStream.java и javah -jni AddToStream и получаю AddToStream.h.
Создаю в компиляторе MVC++ проект Win32/Dll, там пишу:
Код

#include <jni.h>

JNIEXPORT jint JNICALL Java_AddToStream_addStream(JNIEnv *, jobject, jstring, jstring)
{
    
  return 0;
}


Компилирую, получаю dll.
Теперь Вызываю обработчик по нажатию на кнопку в Java:
Код

private void jPacketStreamsActionPerformed(java.awt.event.ActionEvent evt) {
        AddToStream ats = new AddToStream();
        ats.addStream("", ""); //!!!!! ERRORS
    }



Запускаю, нажимаю и вот тут он мне выводит целый список ошибок и я ни как не могу понять от чего они...
Код

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: addStream
        at my.AddToStream.addStream(Native Method)
        at my.MStreams.jPacketStreamsActionPerformed(MStreams.java:210)
        at my.MStreams.access$300(MStreams.java:16)
        at my.MStreams$5.actionPerformed(MStreams.java:91)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:5517)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
        at java.awt.Component.processEvent(Component.java:5282)
        at java.awt.Container.processEvent(Container.java:1966)
        at java.awt.Component.dispatchEventImpl(Component.java:3984)
        at java.awt.Container.dispatchEventImpl(Container.java:2024)
        at java.awt.Component.dispatchEvent(Component.java:3819)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
        at java.awt.Container.dispatchEventImpl(Container.java:2010)
        at java.awt.Window.dispatchEventImpl(Window.java:1791)
        at java.awt.Component.dispatchEvent(Component.java:3819)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)



Автор: AlexeyVorotnikov 25.12.2007, 16:40
Если класс AddToStream находится в пекадже my, то имя функции должно быть вроде как
JNIEXPORT jint JNICALL Java_my_AddToStream_addStream(JNIEnv *, jobject, jstring, jstring)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)