gpt4 book ai didi

java - java native 编程中未满足的链接错误

转载 作者:行者123 更新时间:2023-11-30 17:12:57 26 4
gpt4 key购买 nike

我正在尝试用 java 构建我的第一个 native 程序。.c 和 .h 文件编译得很好,但是在运行 java 代码时出现此错误。这是我的 java 和 c 源文件

Main.java

public class Main{
public native void sayHello();
static{
System.loadLibrary("hello");
}
public static void main(String[] args) {
Main main = new Main();
main.sayHello();
}
}

Hello.c

#include <jni.h>
#include "stdio.h"
#include "Main.h"

JNIEXPORT void JNICALL Java_Main_sayHello(JNIEnv *env, jobject obj){
printf("Hello World \n");
return;

}

.C文件编译

C:.../gcc -I "C:\Program Files\Java\jdk1.7.0_79\include" -I "C:\Program Files\Java\jdk1.7.0_79\include\win32" -o hello.dll -shared Hello.c

运行Java文件

C:.../javac Main.java
C:.../java Main
Exception in thread "main" java.lang.UnsatisfiedLinkError: Main.sayHello()V
at Main.sayHello(Native Method)
at Main.main(Main.java:8)

最佳答案

新 DLL 的目录是 Java 应用程序的工作目录、系统 PATH 变量还是“java.library.path”JVM 变量中?如果没有,则会抛出此异常,因为 JVM 将无法找到 DLL。

不过,我不确定您收到的错误消息格式是什么意思。通常,如果 JVM 找不到库,错误类似于 UnsatisfiedLinkError: no library_name in java.library.path,但您的情况不同。

关于java - java native 编程中未满足的链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31154639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com