Java " />

扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

java loadlibrary濡備綍浣跨敤

扬州沐宇科技
2023-09-25 12:02:38
Java

Java涓殑loadLibrary鏂规硶鐢ㄤ簬鍔犺浇鍔ㄦ€侀摼鎺ュ簱锛圖LL銆丼O绛夛級鏂囦欢銆備互涓嬫槸浣跨敤loadLibrary鏂规硶鐨勬楠わ細

  1. 鍒涘缓涓€涓狫ava绫伙紝渚嬪LibraryLoader銆?/p>

  2. 鍦ㄨ绫讳腑澹版槑涓€涓湰鍦版柟娉曪紝璇ユ湰鍦版柟娉曠敤浜庡姞杞藉姩鎬侀摼鎺ュ簱銆備緥濡傦細

public class LibraryLoader {
public static native void loadLibrary(String libraryName);
}
  1. 鍦↗ava绫讳腑浣跨敤System.loadLibrary()鏂规硶鏉ュ姞杞芥湰鍦版柟娉曘€備緥濡傦細
public class Main {
public static void main(String[] args) {
System.loadLibrary("myLibrary");
}
}
  1. 浣跨敤javac鍛戒护缂栬瘧Java绫伙細javac LibraryLoader.java

  2. 浣跨敤javah鍛戒护鐢熸垚C/C++澶存枃浠讹細javah -jni LibraryLoader

  3. 鍦ㄧ敓鎴愮殑澶存枃浠朵腑瀹炵幇鏈湴鏂规硶锛屽姞杞藉姩鎬侀摼鎺ュ簱銆備緥濡傦紝瀵瑰簲涓婇潰鐨勪緥瀛愶紝鐢熸垚鐨勫ご鏂囦欢涓彲浠ユ坊鍔犱互涓嬩唬鐮侊細

#include <jni.h>
#include <stdio.h>
#include "LibraryLoader.h"
JNIEXPORT void JNICALL Java_LibraryLoader_loadLibrary(JNIEnv *env, jclass cls, jstring libraryName) {
const char *name = (*env)->GetStringUTFChars(env, libraryName, NULL);
// 鍔犺浇鍔ㄦ€侀摼鎺ュ簱
if (name != NULL) {
printf("Loading library: %s\n", name);
// 鍔犺浇鍔ㄦ€侀摼鎺ュ簱鐨勪唬鐮?/span>
(*env)->ReleaseStringUTFChars(env, libraryName, name);
}
}
  1. 浣跨敤C/C++缂栬瘧鍣ㄧ紪璇戠敓鎴愮殑澶存枃浠跺拰瀹炵幇鏂囦欢锛岀敓鎴愬姩鎬侀摼鎺ュ簱鏂囦欢銆備緥濡傦紝瀵瑰簲涓婇潰鐨勪緥瀛愶紝鍙互浣跨敤浠ヤ笅鍛戒护缂栬瘧鐢熸垚鍔ㄦ€侀摼鎺ュ簱鏂囦欢锛?/li>
  • Windows锛?/li>
gcc -shared -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" LibraryLoader.c -o myLibrary.dll
  • Linux锛?/li>
gcc -shared -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" LibraryLoader.c -o libmyLibrary.so
  1. 杩愯Java绋嬪簭锛屽嵆鍙€氳繃loadLibrary鏂规硶鍔犺浇鍔ㄦ€侀摼鎺ュ簱銆?/li>

扫码添加客服微信