У меня есть очень сложная и большая DLL, написанная на C ++ для Win32 разработчиками из других отделов, которая должна использоваться моими java -процессами. Что у меня есть:
Ограничения: Мне не разрешено (хотя у меня есть файл .sol) вносить какие-либо изменения в эту DLL.
Цель : Я хочу, чтобы мои java -процессы могли вызывать некоторые методы из этой DLL.
Инструменты: Сначала я хочу попробовать это с JNA (второй JNI) .
Проблема:
Я прочитал некоторую общую информацию о JNA и понял, что сначала вы создаете прототипы методов, которые вы хотите вызвать в интерфейсе. Хорошо, теперь вопрос в следующем: методы, которые я хочу вызвать, принимают в качестве параметров самоопределяемые объекты из проекта DLL. Например, у меня есть функция в DLL, например:
__declspec(dllexport) BOOL WINAPI NiceFunction(
Dummy_State *ModuleState, Dummy_Handle Handle, Dummy_Exception &Exception,
LPCTSTR name, DWORD timer);
Где все Dummy_
объекты имеют классы, определенные в этой DLL.
Вопрос 1: как вызвать с помощью JNA такие функции в моем java процессе?
Вопрос 2: можно ли использовать эти объекты как-то прямые в моем java процессе? Может быть, импортировать как-то конструктор? Однако конструкторы этих объектов часто требуют вызова конструкторов родительского (ых) класса (ов).
Вопрос 3: И последнее, но не менее важное: моя DLL также вызвала две дополнительные DLL и широко использовала данные из них (некоторые из Dummy_
объектов). Нужно ли мне импортировать (как-то) их в моем java процессе через JNA или нет?