• Home
  • pcDuino
  • WiKi
  • Store
  • Distributors
  • Home
  • pcDuino
  • WiKi
  • Store
  • Distributors
HomepcDuinoJavaJava call dynamic link library-jna (2)
Previous Next

Java call dynamic link library-jna (2)

Posted by: Alvin Jin , March 16, 2014

Last week, using the underlying principle of Linux, successfully realized GPIO control on pcDuino .If use  the same approach on PWM, ADC serial port  , we found that it is very difficult.This week we begin to using jna, call dynamic link library, to complete the pcDuino control.

There are 5 steps for  Java call dynamic link library-jna (2):

1. Create test.c file

#include"stdio.h"
int add(int a,int b);
int add(int a,int b){
      return a+b;
}

2. Compiler to generate dynamic

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

3. Create the project test  on the eclipse of  pcDuino , import the download  jna.jar package, create a class JNA_test, write code

import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
 
public class JNA_test
{
 //\u5b9a\u4e49\u63a5\u53e3CLibrary\uff0c\u7ee7\u627f\u81eacom.sun.jna.Library
    public interface CLibrary extends Library
    {
     //\u5b9a\u4e49\u5e76\u521d\u59cb\u5316\u63a5\u53e3\u7684\u9759\u6001\u53d8\u91cf
     CLibrary Instance=(CLibrary)Native.loadLibrary("test",CLibrary.class);
 
        //printf\u51fd\u6570\u58f0\u660e
        //void printf(String str,Object... args);
         int add(int a,int b);
    }
 
    public static void main(String[] args)
    { 
        int sum= CLibrary.Instance.add(1,2);
        System.out.println("1+2="+sum);
    }
}

4. Just copy the generated files to the project libtest, there was an error.

5.  Run the project, there was an erroe, search information, and then download the latest Jna https://java.net/projects/jna/downloads/, run again, remain unusual, but abnormal information information has changed

Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't obtain updateLastError method for class com.sun.jna.Native
at com.sun.jna.Native.initIDs(Native Method)
    at com.sun.jna.Native.<clinit>(Native.java:139)
    at JNA_test$CLibrary.<clinit>(JNA_test.java:13)
    at JNA_test.main(JNA_test.java:23)

Tags: Java

Share!
Tweet

Alvin Jin

About the author

Leave a Reply Cancel reply

You must be logged in to post a comment.

Category

  • Home
  • pcDuino
  • WiKi
  • Store
  • Distributors