java — связывает стороннюю dll с моей dll

Я пытаюсь написать некоторый код Java, который будет обращаться к методам в сторонних DLL. Я использовал JNA, чтобы попытаться отобразить его напрямую (я могу вызывать функции без структур в качестве параметров), но у меня возникают проблемы при попытке получить доступ к полям структур после вызова функции (они не были обновлены). Так, Мой смелый новый подход — попытаться создать свою собственную dll, которая берет исходные типы переменных из моего java-кода и, в свою очередь, помещает их в соответствующие структуры для передачи сторонним dll.

У меня есть код C ++, который хорошо связывается с третьей стороной DLL, но мой вопрос Как я могу получить мой Java-код для работы с этим кодом C ++? проще всего превратить код с ++ в dll и если да, то как мне это сделать? (поэтому превратите этот код в саму dll. Я использую Visual Studio 2012 и Eclipse Juno в качестве моей IDE)

C ++ код здесь (.cpp)

#include <stdio.h>
#include <Windows.h>
#include "Header.h"FINDNEODEVICES icsneoFindNeoDevices;
GETDLLVERSION icsneoGetDLLVersion;

//extern int __declspec(dllimport) add(int a, int b);
bool LoadLibDLL(HINSTANCE &hAPIDLL){
hAPIDLL = LoadLibrary(L"icsneo40.dll");
icsneoGetDLLVersion = (GETDLLVERSION) GetProcAddress(hAPIDLL,                   "icsneoGetDLLVersion");
icsneoFindNeoDevices =    (FINDNEODEVICES) GetProcAddress(hAPIDLL,              "icsneoFindNeoDevices");
return true;
}

int main() {

HINSTANCE icsneo40;
bool success = LoadLibDLL(icsneo40);
printf("Version #: %d\n", icsneoGetDLLVersion());
int aray [5] = {600, 600, 600, 100, 600};
int *p = aray;
int num = 10;
int lResult = icsneoFindNeoDevices(65545,p,&num);
printf("Serial NUmber: %d\n", aray[3]);
getchar();
return 0;

}

заголовка (.h)

typedef int  (__stdcall *FINDNEODEVICES)(unsigned long DeviceTypes, int* myint, int *pNumDevices);
typedef int (__stdcall *GETDLLVERSION)(void);
extern FINDNEODEVICES icsneoFindNeoDevices;
extern GETDLLVERSION icsneoGetDLLVersion;

0

Решение

Попробуйте следовать учебнику по JNI, как этот:

http://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html

Во-первых, следуйте инструкциям, чтобы получить методы Java, которые могут вызываться в методах C ++.
Затем измените методы C ++ так, чтобы они были похожи на приведенный выше код, вызывая стороннюю DLL.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]