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
  • 相关阅读:
    js和c#小数四舍五入
    c#连接关闭了,事务并没有关闭
    SQLNET跟踪tnsping过程
    关闭listener监听日志
    DBMS_RANDOM 用法
    获取oracle当前系统设置了哪些事件
    oracle获取主机服务器IP
    动态性能视图v$session_longops
    PRINT_TABLE 列以行形式显示
    mac 开启ntfs 权限
  • 原文地址:https://www.cnblogs.com/nanfei/p/11687620.html
Copyright © 2011-2022 走看看