gpt4 book ai didi

java.lang.UnsatisfiedLinkError 使用 native 接口(interface)

转载 作者:行者123 更新时间:2023-11-29 08:58:41 24 4
gpt4 key购买 nike

我有这个 cpp 文件:

//pkgnative_tries__native_NativeSystem.cpp
#include <pkgnative_tries__native_NativeSystem.h>
#include<iostream>
using namespace std;

extern "C"
JNIEXPORT void JNICALL Java_pkgnative_tries__1native_NativeSystem_println
(JNIEnv *env, jobject obj, jstring javaString)
{
//Get the native string from javaString
const char *nativeString = env->GetStringUTFChars(javaString, 0);
cout << nativeString;

env->ReleaseStringUTFChars(javaString, nativeString);
}

pkgnative_tries__native_NativeSystem.h:

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

#ifndef _Included_pkgnative_tries__native_NativeSystem
#define _Included_pkgnative_tries__native_NativeSystem
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: pkgnative_tries__native_NativeSystem
* Method: println
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_pkgnative_tries__1native_NativeSystem_println
(JNIEnv *, jobject, jstring);

#ifdef __cplusplus
}
#endif
#endif

这是java类:

import java.io.File;

public class NativeSystem {
static {
try {
System.load(new File(NativeSystem.class.getResource("native_files/pkgnative_tries__native_NativeSystem.dll").toURI()).getPath());
} catch (Exception e) {
System.err.println("Error");
e.printStackTrace();
}
}
public static native void println(String obj);
}

当我调用 NativeSystem.println("abc"); 它显示

Exception in thread "main" java.lang.UnsatisfiedLinkError: NativeSystem.println(Ljava/lang/String;)V
at NativeSystem.println(Native Method)
at NativeTries.main(NativeTries.java:19)
Java Result: 1

有人知道为什么吗?我确定 dll 已加载,NativeSystemstatic block 中的 catch block 不会执行。我以前从未遇到过这种情况。我该如何解决?

最佳答案

C++ 确实会破坏 DLL 中函数的名称,如果您在 Windows 上,您可以使用 dumpbin 查看函数名称在 dll 中的样子。

关于java.lang.UnsatisfiedLinkError 使用 native 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18832952/

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