2010-10-25 3 views
1

У меня есть DLL, который имеет метод например void abc(meth* myMeth) и структуруJNI структура отображения в Java

struct meth 
{ 
    int a; 
    char b[255]; 
} 

Приведенный выше код код написан на с. Мне нужно сопоставить это с Java через JNI, и я застрял. Как передать ссылку на метод abc в качестве указателя из метода Java и как установить значения a и b, а затем снова вернуться к Java? Нужна срочная помощь .... Спасибо

+0

http://forums.sun.com/thread.jspa?threadID=5446936 –

+0

http://stackoverflow.com/questions/3923299/how-to-pass-c-structs-back-and-forthtoto -java-code-in-jni/4002158 # 4002158 – qrtt1

ответ

1

Не существует сопоставления между Java-классами и C-структурами (не уверен, как это работает с JNA); вам придется создать Java-класс с теми же элементами, что и ваша C-структура, и написать C-функции для преобразования между ними.

+0

@lhballoti ... я сделал это с этим процессом, и я думаю, что он хорошо отображен. – msm

2

Я не знаю, если это вариант для вас, но рассмотрите возможность использования структуры верхнего уровня для управления деталями JNI на низком уровне для вас. Два варианта:

  • JNAerator, см. Также главу «Structs» в справочной документации.
  • SWIG, см. Также главу «Structures and unions» в справочной документации.

Лично я использовал JNAerator и нашел, что это действительно полезно.