使用 jni 的 java.lang.UnsatisfiedLinkError

标签 java java-native-interface

class HelloWorld {
    public native void print();  //native method
    static   //static initializer code
    {
        try{
            String path = System.getProperty("java.library.path");
            System.out.println(path);
        System.loadLibrary("CLibHelloWorld1");
        //System.load("C:/TE_CDA_Project/Test/native/CLibHelloWorld1.dll");
        //Runtime.getRuntime().load("C:/TE_CDA_Project/Test/native/CLibHelloWorld1.dll");

    System.out.println("Loaded CallApi");
    }catch(UnsatisfiedLinkError e){
        e.printStackTrace();
    }
}

public static void main(String[] args)
{
    HelloWorld hw = new HelloWorld();

    hw.print();


}

}

输出:

C:\TE_CDA_Project\Test\native
Loaded CallApi
Exception in thread "main" java.lang.UnsatisfiedLinkError: Graph.HelloWorld.print()V
    at Graph.HelloWorld.print(Native Method)
    at Graph.HelloWorld.main(HelloWorld.java:26)

最佳答案

将此添加到您的 C 编译器中,它对我有用的附加选项:

   -Wl,--export-all-symbols -Wl,--add-stdcall-alias

关于使用 jni 的 java.lang.UnsatisfiedLinkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16539921/

相关文章:

java - 单击 JButton 时更改 JPanel 图标

java - 将文本从 JTextField 放入 JLabel

java - ConcurrentHashMap 操作是线程安全的

java - 无法借助 JNA 库访问内存引用

java - 使用 JPA avec setter 调用的持久对象自动更新

java - 圆与圆相交代码给出了错误的坐标

java - JNI 中的二维数组

android - 如何将 Java 与 NDK Android 一起使用?

java - 在 Android Studio 中构建 Android NDK 时出错

java - Makefile: fatal error :jni.h:没有这样的文件或目录