Java JNI java.lang.UnsatisfiedLinkError с использованием GetaSyncKeyState в DLL

Моя проблема заключается в следующем. Я довольно новичок в отношении кода C / C ++. У меня такое ощущение, что я использую что-то неправильно или не использую то, что должно быть там. Хотя я сделал тестовое приложение, чтобы увидеть, выполняет ли код dll и делает ли он. Я много гуглил по этому поводу и, похоже, ничего не могу найти. Если мне нужно что-то объяснить, пожалуйста, дайте мне знать. Это мой первый пост. Кстати, я использую этот сайт все время, хотя это здорово.

Java-код возвращает ошибку:

Exception in thread "Thread-2" java.lang.UnsatisfiedLinkError: ghostclickerredux.GlobbyMouse.whatButton()I

Весь приведенный ниже код написан на языке Java и содержится в классе, который реализует работающий интерфейс. Поток запускается и будет выполнять цикл до тех пор, пока … вы получите остальное. Если я хочу прокомментировать строку gM.whatButton (), все работает как обычно.

boolean recording = true;
do {
if(xT != gM.getMouseX() || yT != gM.getMouseY()){
xT = gM.getMouseX(); // This Works.
yT = gM.getMouseY(); // This Works.
System.out.println("Mouse X: " + xT + " Y: " + yT); // This Works.
System.out.println(gM.whatButton()); // This throws me the error.
}
} while (recording);

Ниже приведен файл заголовка, созданный javah.

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class ghostclickerredux_GlobbyMouse */

#ifndef _Included_ghostclickerredux_GlobbyMouse
#define _Included_ghostclickerredux_GlobbyMouse
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     ghostclickerredux_GlobbyMouse
* Method:    getMouseX
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_ghostclickerredux_GlobbyMouse_getMouseX
(JNIEnv *, jobject);

/*
* Class:     ghostclickerredux_GlobbyMouse
* Method:    getMouseY
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_ghostclickerredux_GlobbyMouse_getMouseY
(JNIEnv *, jobject);

/*
* Class:     ghostclickerredux_GlobbyMouse
* Method:    whatButton
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_ghostclickerredux_GlobbyMouse_whatButton
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

Наконец код CPP.

#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <winuser.h>
#include "GlobbyMouse.h"
using namespace std;

int mouseX = 0;
int mouseY = 0;
POINT p;

void setMousePos() {
if (GetCursorPos(&p)) {
mouseX = p.x;
mouseY = p.y;
} else {
cout << "Could not set mouse variables..." << endl;
}
}

JNIEXPORT jint JNICALL Java_ghostclickerredux_GlobbyMouse_whatButton
(JNIEnv *, jobject) {
if (GetAsyncKeyState(VK_LBUTTON) & 0x8000) {
return 0;
} else
if (GetAsyncKeyState(VK_MBUTTON) & 0x8000) {
return 1;
} else
if (GetAsyncKeyState(VK_RBUTTON) & 0x8000) {
return 2;
} else
if (GetAsyncKeyState(VK_XBUTTON1) & 0x8000) {
return 3;
} else
if (GetAsyncKeyState(VK_XBUTTON2) & 0x8000) {
return 4;
} else {
return -1;
}
}

JNIEXPORT jint JNICALL Java_ghostclickerredux_GlobbyMouse_getMouseX
(JNIEnv *, jobject) {
setMousePos();
return mouseX;
}

JNIEXPORT jint JNICALL Java_ghostclickerredux_GlobbyMouse_getMouseY
(JNIEnv *, jobject) {
setMousePos();
return mouseY;
}

1

Решение

Задача ещё не решена.

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

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

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