Когда я пытаюсь использовать библиотеку.dll с Java, у меня появляется эта ошибка:
java.lang.UnsatisfiedLinkError: C:\Users\ledev\Desktop\library.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2424)
at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2481)
at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2678)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2643)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:876)
at java.base/java.lang.System.loadLibrary(System.java:1875)
at JNI.HelloJNI.<clinit>(HelloJNI.java:6)
Exception in thread "main"
Вот мой код main.c:
#include "main.h"
#include <stdio.h>
#include<stdlib.h>
DLL_EXPORT void hello_jni()
{
printf("Hello, JNI !");
}
Вот мой главный.h:
#ifndef __MAIN_H__
#define __MAIN_H__
#define BUILDING_DLL
#include <windows.h>
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
#ifdef __c
extern "C"
{
#endif
DLL_EXPORT void hello_jni();
#ifdef __c
}
#endif
#endif // __MAIN_H__
А вот мой код Java:
package JNI;
public class HelloJNI {
static {
System.loadLibrary("library");
}
private native void hello_jni();
public static void main(String[] args) {
new HelloJNI().hello_jni(); // invoke the native method
}
}
Вот как я создал свою dll:
g++ -c -BUILD_DLL main.c
g++ -shared -o library.dll main.o -Wl,--out-implib,libexample_dll.a
Я работаю под intellij IDEA для java и без конкретной IDE для моего c-кода. Моя ОС Windows 10.
Я действительно не знаю, что мне нужно изменить, чтобы это работало. Мне не помогла ни одна из прочитанных тем (например: Создайте действительную общую библиотеку в C ). Если тебе нужно что-то еще, просто скажи мне.