zoukankan      html  css  js  c++  java
  • java通过jna调用so

    c++:

    FirstEliteValidate.h

    #pragma once
    
    void __attribute__((constructor)) startup();
    void __attribute__((destructor)) shutdown();
    #ifdef __cplusplus
    extern "C" { #endif int FirstEliteValidateTest(); #ifdef __cplusplus } #endif

    FirstEliteValidate.cpp

    #include "FirstEliteValidate.h"
    
    /*
        To test the library, include "FirstEliteValidate.h" from an application project
        and call FirstEliteValidateTest().
        
        Do not forget to add the library to Project Dependencies in Visual Studio.
    */
    
    static int s_Test = 0;
    
    int FirstEliteValidateTest()
    {
        return ++s_Test;
    }
    

    编译出so文件命名为 libFirstEliteValidate.so,复制到 /usr/lib下

    java:

    package com.bg.security;
    
    import java.util.Properties;
    
    import com.sun.jna.Library;
    import com.sun.jna.Native;
    
    public class Program4Linux {
        
        public interface CLibrary extends Library {
            int FirstEliteValidateTest();
        }
    
        
        public static void main(String[] args) 
        {
            CLibrary lib = (CLibrary) Native.load("FirstEliteValidate", CLibrary.class);
            int a = lib.FirstEliteValidateTest();
            int b = lib.FirstEliteValidateTest();
            int c = lib.FirstEliteValidateTest();
    
            System.out.println("a=" + a);
            System.out.println("b=" + b);
            System.out.println("c=" + c);
            
            Properties props = System.getProperties();
            System.out.println("Operation System:" + props.getProperty("os.name"));
            System.out.println("System Version:" + props.getProperty("os.version"));
            System.out.println("end");
        }
    }

     运行:

    java -Djava.ext.dirs=/home/knife/DemoCode/jar -Djava.library.path=lib com.bg.security.Program4Linux
  • 相关阅读:
    面试题 41 和为s的两个数字VS 和为S的连续整数序列
    面试题 40 数组中只出现一次的数字
    面试题 39 二叉树的深度
    面试题 38数字在排序数组中出现的次数
    面试题 37 两个链表的第一个公共节点
    面试题36 数组中的逆序对
    面试题 35 第一个出现的字符
    省选模拟65 题解
    省选模拟64 题解
    省选模拟63 题解
  • 原文地址:https://www.cnblogs.com/nanfei/p/11687620.html
Copyright © 2011-2022 走看看