gpt4 book ai didi

java - 在 Windows 上使用 JNA 加载自定义库

转载 作者:太空宇宙 更新时间:2023-11-04 02:42:36 26 4
gpt4 key购买 nike

我有一个 .c 文件,其中使用 JNIEXPORT 定义了方法,但我不知道如何在使用 JNA 导入它们的 Java 类中使用这些方法

我尝试阅读 this guide但我不明白是否可以链接特定的 .c 文件。

有人可以帮助我吗?

最佳答案

是的,可以像往常一样构建和编译共享库,并使用 Native.loadLibrary 加载它。

C:

#include <stdio.h>

void exampleMethod(const char* value)
{
printf("%s\n", value);
}

以通常的方式编译它(这里显示 linux 上的 gcc):

gcc -c -Wall -Werror -fPIC test.c
gcc -shared -o libtest.so test.o

Java:

import com.sun.jna.Library;
import com.sun.jna.Native;

public class TestJNA{
public interface CLibrary extends Library {
public void exampleMethod(String val);
}

public static void main(String[] args) {
CLibrary mylib = (CLibrary)Native.loadLibrary("test", CLibrary.class);
mylib.exampleMethod("ImAString");
}

}

由于您在查找库时遇到问题,这通常是通过配置 java.library.path 添加一个新位置来搜索 .so/.dll 来解决的:

java -Djava.library.path=c:\dlllocation TestJNA

或者,您可以在加载库之前直接从您的代码中设置它(适用于 JNI,应该也适用于 JNA,但我没有尝试过):

String libspath = System.getProperty("java.library.path");
libspath = libspath + ";c:/dlllocation";
System.setProperty("java.library.path",libspath);

//Load your library here

关于java - 在 Windows 上使用 JNA 加载自定义库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30327006/

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