Вызов DLL с интерфейсом C из Java - PullRequest
0 голосов
/ 10 августа 2011

Я пытаюсь вызвать собственные методы в сторонней DLL, которая имеет интерфейс C с такими методами, как:

DWORD ExampleInterfaceMethod( DWORD Mode, LPSTR Header );

Я успешно загрузил DLL, используя:

System.loadLibrary("DLLName");

и я создал метод:

protected native int ExampleInterfaceMethod(int type, int Nth, byte[] name);

Этот метод, похоже, не использует правильные типы переменных, так как всякий раз, когда я вызываю его, выдается следующая ошибка:

java.lang.UnsatisfiedLinkError: com.DLLTest.ExampleInterfaceMethod(II[B)I

Какие типы переменных мне нужно использовать в Java для вызова этого метода, или я что-то упустил?

1 Ответ

3 голосов
/ 10 августа 2011

С JNI вам нужны специально названные функции C для реализации ваших методов Java native.Вы не можете просто добавить native метод для вызова существующей функции C - вместо этого обычным способом является создание «обёрточной» функции C, которая вызывает существующую и названа правильно.

Youвозможно, захотите взглянуть на JNA .Это обертка вокруг JNI, которая позволяет вам вызывать функции C со стороны Java без написания вручную адаптационного кода для этого.

...