设为首页 加入收藏

TOP

JNA 调用 so 库(一)
2012-11-13 13:23:30 】 浏览:1307
Tags:JNA  调用   so 

    最近自己写的一个广告发布平台要迁移到Linux平台上,由于之前用的是windows平台的dll文件,现在要改用。so.讲下如何在Linux下面调用。so.

    在linx下使用jna调用本地方法的时候,需要将C写成的程序编译为so文件

    1、写一个简单test.c文件:

    [cpp]

    #include<stdio.h>

    int add(int a,int b);

    int add(int a,int b)

    {

    int c = a + b ;

    return c ;

    }

    2、编译为so动态链接库:

    [cpp]

    gcc -fpic -c test.c

    gcc -shared -o libtest.so test.o

    ls看一下生成的文件:

    libtest.so test.c test.o

    这样就会生成so文件了。 这里为什么要命名为libtest.so而不是test.so呢?因为jna在找so文件的时候,要匹配前缀为lib的so文件

    3、接下来开始写java文件(需要下载jna.jar),我们写一个TestSo.java:

    [java]

    import com.sun.jna.Library;

    import com.sun.jna.Native;

    public class TestSo {

    public interface LgetLib extends Library {

    // 调用linux下面的so文件,注意,这里只要写test就可以了,不要写libtest,也不要加后缀

    LgetLib INSTANCE = (LgetLib) Native.loadLibrary("test",LgetLib.class);

    int add(int a,int b);

    }

    public int add(int a,int b){

    return LgetLib.INSTANCE.add(a,b);

    }

    public static void main(String[] args) {

    TestSo ts = new TestSo();

    int c = ts.add(10,20);

    System.out.println("10+20="+c);

    }

    }

   

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇由点集序列或数组创建凸边形 下一篇一个简易画板的实现(Graphics&nbs..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目