zoukankan      html  css  js  c++  java
  • java调用so文件

    java调用so文件:

    先看头文件:

    确定类,必须保持一致(包括路径:com_tracker_common_business_jobUserTag_contentTags_service_ContentTagsServiceSS)

    确定需要调用的方法(例如globalInitFull,返回值为boolean):

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include "jni.h"
    /* Header for class com_tracker_common_business_jobUserTag_contentTags_service_ContentTagsServiceSS */
    
    #ifndef _Included_com_tracker_common_business_jobUserTag_contentTags_service_ContentTagsServiceSS
    #define _Included_com_tracker_common_business_jobUserTag_contentTags_service_ContentTagsServiceSS
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     com_tracker_common_business_jobUserTag_contentTags_service_ContentTagsServiceSS
     * Method:    globalInit 全局初始化
     * Args:      inferenceDir    jstring Inference的路径如"C:/Inference"
     * Args:      threadCount   jint    线程数
     * Signature: ()V
     */
    JNIEXPORT jboolean JNICALL Java_com_tracker_common_business_jobUserTag_contentTags_service_ContentTagsServiceSS_globalInitFull
    (JNIEnv *, jobject, jstring, jint, jstring);

    编写对应的java类:

    package com.tracker.common.business.jobUserTag.contentTags.service;
    
    import com.google.common.collect.Maps;
    import com.tracker.common.business.contentTags.model.entity.RsmDataEntity;
    import com.tracker.common.data.dao.HBaseDao;
    import com.tracker.common.utils.StringUtil;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import java.util.List;
    import java.util.Map;
    import java.util.concurrent.atomic.AtomicInteger;
    
    public class ContentTagsServiceSS {
        private static final Logger LOG = LoggerFactory.getLogger(ContentTagsServiceSS.class);
        public native boolean globalInitFull(String initFilePath, int threadNumber, String logpath);
        public native String getCVLabels(String input);
        public native void globalCloseFull(String initFilePath, String logpath);
        
        
        private final String EMPTYTAGS = StringUtil.STRING_2 + 0 + StringUtil.STRING_2;
        public static AtomicInteger errorCount = new AtomicInteger(0);
    
        public ContentTagsServiceSS(String initPath,int maxThreadNum,String logPath){
            System.load(initPath+"/SemanticLabel.so");
            globalInitFull(initPath,maxThreadNum,logPath);
        }
    
        public void close(String initPath,String logPath){
            globalCloseFull(initPath,logPath);
        }
    }

    这样的话,就搞定了一个so文件对应的相关映射类。

  • 相关阅读:
    最详细易懂的CRC-16校验原理(附源程序)(转)
    深入理解Java的接口和抽象类(转)
    同步、更新、下载Android Source & SDK from 国内镜像站(转载)
    django字段查询参数及聚合函数
    django不返回QuerySets的API
    django查询集API
    django查询操作
    django用包来组织模型
    django模型的继承
    django模型的元数据Meta
  • 原文地址:https://www.cnblogs.com/parent-absent-son/p/11347569.html
Copyright © 2011-2022 走看看