lexluther Опубликовано 22 ноября, 2008 Жалоба Поделиться Опубликовано 22 ноября, 2008 Всем привет, Занялся изучением технологии JNI и столкнулся с проблемой. Мой пример не работает хотя код написан по всем правилам. Код C++ библиотеки сгенерированный при помощи javah: #include <windows.h> #include <jni.h> extern "C" JNIEXPORT void JNICALL Java_MyJavaPackage_NextLevelClass_ShowCall(JNIEnv *, jobject); И #include "MyJavaPackage_NextLevelClass.h" extern "C" JNIEXPORT void JNICALL Java_MyJavaPackage_NextLevelClass_ShowCall (JNIEnv *, jobject) { MessageBox(NULL,"TEST","TEST",MB_OK); } Есть класс в котором я определил внешний нейтивный метод: package MyJavaPackage; public class NextLevelClass{ static { try{ System.load("G:\\Documents and Settings\\artiom\\My Documents\\NetBeansProjects\\MyDesktopApplication\\dist\\lib\\MyDynamicLibrary.dll"); } catch(UnsatisfiedLinkError g) { System.out.print(g.getMessage() + " LIBRARY EXCEPTION"); } } private static native void ShowCall(); public void GiveIt() { try{ ShowCall(); } catch(UnsatisfiedLinkError g) { System.out.print(g.getMessage() + " METHOD EXCEPTION\n"); } } } Сам код в вызывающей программе выглядит следующим образом: NextLevelClass NLC1 = new NextLevelClass(); NLC1.GiveIt(); В результате при выполнении библиотека сама загружается идеально, но при вызове метода ShowCall возникает исключение UnsatisfiedLinkError. Подскажите пожалуйста в чем может быть проблема? Версия ОС: Windows XP Service Pack 3 Версия JAVA (java -version): java version "1.6.0" Java SE Runtime Environment (build 1.6.0-b105) Java HotSpot Client VM (build 1.6.0-b105, mixed mode, sharing) Среда разработки (About окно): Product Version: NetBeans IDE 6.1 (Build 200805300101) Java: 1.6.0; Java HotSpot Client VM 1.6.0-b105 System: Windows XP version 5.1 running on x86; Cp1251; uk_UA (nb) Userdir: G:\Documents and Settings\artiom\.netbeans\6.1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.