我尝试使用this tutorial.创建一个JNI helloworld项目
我完成了页面上的每一步。不幸的是,在尝试使用java -Djava.library.path="C:/Users/Philipp/Desktop/jni" HelloWorld
调用该程序后,我收到以下错误消息:
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\Philipp\Desktop\jni\helloworld.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at HelloWorld.<clinit>(HelloWorld.java:3)
有关此类错误的stackoverflow存在一些问题,遗憾的是,没有一个解决方案适用于我。
我想留在JDK 64位,所以我想我必须为64位机器编译我的C代码。我尝试使用-m64
关键字:gcc -shared HelloWorld.c -I"C:/Program Files/Java/jdk1.8.0_121/include" -I"C:/Program Files/Java/jdk1.8.0_121/include/win32" -o libhelloworld.dll -m64
,这会导致以下错误:
HelloWorld.c:1:0: sorry, unimplemented: 64-bit mode not compiled in
#include <jni.h>
^
我需要做些什么才能让它运行?
答案 0 :(得分:1)
你需要一个#version 330 core
layout (location = 0) in vec3 position;
uniform mat4 matrices;
void main()
{
gl_Position = matrices * vec4(position, 1.0f);
}
x86_64
工具链来为x64编译它(如果你在windows中,可能是mingw)。你是对的,因为你的JDK是AMD64,所以SO / DLL也需要是AMD64。
在Windows中,您可以通过cygwin env或msys2安装GCC
工具链,也可以使用Microsoft C编译器。