最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

基于Linux的JNI動態(tài)函數(shù)注冊

2020-10-09 17:16 作者:開源開發(fā)者  | 我要投稿



cmake_minimum_required(VERSION 3.2)


project(AlgorithmLibrary)


set(ProjectDir ${CMAKE_CURRENT_SOURCE_DIR})


set(LIBRARY_OUTPUT_PATH ${ProjectDir}/lib)


set(DynamicRegisterDir ${CMAKE_CURRENT_SOURCE_DIR}/DynamicRegister/)


include_directories(


? ? ./include /opt/jdk1.8.0_201/include/?


? ? ${DynamicRegisterDir}


? ? TimeComplexity/


? ? Test/


)


add_library(

? ??

? ? AlgorithmLibrary SHARED?


? ? ${DynamicRegisterDir}/DynamicRegisterMethod.cpp


? ? TimeComplexity/InstrucNumTime.cpp


? ? Test/Test.cpp


)

動態(tài)函數(shù)注冊核心代碼


#ifndef DynamicRegisterMethod

#define DynamicRegisterMethod

#include <Common.h>

#include <InstrucNumTime.h>

#include <Test.h>

#endif


#include <DynamicRegisterMethod.h>


using namespace std;


char* javaClass []? = {


? ? (char*)"com/ossit/demo01/App",


};


static JNINativeMethod getMethod[1][2] = {


? ? {

? ? ? ? {(char*)"printInstructionTime",(char*)"()V",(void*)printInstructionTime},

? ? ? ? {(char*)"test",(char*)"()V",(void*)test}

? ? ? ?

? ? }

? ??

};


int registerNativeMethods(JNIEnv* env,const char* name,

? ? JNINativeMethod* methods,jint nmethods){


? ? jclass jcls;

? ??

? ? jcls = env->FindClass(name);


? ? if(jcls == NULL) {


? ? ? ? return JNI_FALSE;



? ? }


? ? if(env->RegisterNatives(jcls,methods,nmethods) < 0){


? ? ? ? return JNI_FALSE;


? ? }

? ??

? ? return JNI_TRUE;


}



JNIEXPORT int JNICALL JNI_OnLoad(JavaVM* vm,void* reserved){

? ??

? ? JNIEnv* env;


? ? if(vm->GetEnv(reinterpret_cast<void**>(&env),JNI_VERSION_1_6) != JNI_OK){


? ? ? ? return JNI_FALSE;


? ? }


? ? int count=0;


? ? for(int i=0;i < sizeof(javaClass)/sizeof(javaClass[0]);i++){

? ? ? ??

? ? ? ? for(int j=0;j< sizeof(getMethod[i])/sizeof(getMethod[i][0]);j++){

? ? ? ? ? ??

? ? ? ? ? ? if(getMethod[i][j].fnPtr != NULL){


? ? ? ? ? ? ? ? count++;

? ? ? ? ? ? ? ??

? ? ? ? ? ? }

? ? ? ? }


? ? ? ? registerNativeMethods(env,javaClass[i],&getMethod[i][0],count);


? ? ? ? count = 0;

? ? }


? ? cout << "LoadAlgorithmLibrary" << endl;

? ??

? ? return JNI_VERSION_1_6;

}

#ifndef Common

#define Common

#include <jni.h>

#include <iostream>

#include <stdio.h>


#endif


#ifndef Test

#define Test

#include <Common.h>

void test();

#endif

#include <Test.h>


void test(){

? ? int l;

? ? short s;

? ? char c;


? ? l =? 0xabcddcba;

? ? s = l;

? ? c = l;


? ? printf("寬度溢出\n");

? ? printf("l = 0x%x (%d bits)\n", l, sizeof(l) * 8);

? ? printf("s = 0x%x (%d bits)\n", s, sizeof(s) * 8);

? ? printf("c = 0x%x (%d bits)\n", c, sizeof(c) * 8);


? ? printf("整型提升\n");

? ? printf("s + c = 0x%x (%d bits)\n", s+c, sizeof(s+c) * 8);

}

#include <InstrucNumTime.h>

#include <cmath>

#include <ctime>


using namespace std;


/**

?*?

?* 計(jì)算機(jī)處理指令數(shù)的時(shí)間

?*?

**/




void printInstructionTime(){

? ??

??



? ? for(jint i=1;i<=9;i++){

? ? ? ??


? ? ? ? jint number = pow(10,i);


? ? ? ? clock_t startTime = clock();


? ? ? ? jint sum = 0;


? ? ? ? for(jint j=0;j<number;j++){

? ? ? ? ? ? sum += j;

? ? ? ? }

? ?

? ? ? ? clock_t endTime = clock();


? ? ? ? cout << "10^" << i << " : " << (jdouble)(endTime-startTime)/CLOCKS_PER_SEC << "s" << endl;

? ? ??

? ? }


}

#ifndef InstrucNumTime

#define InstrucNumTime

#include <Common.h>

void printInstructionTime();

#endif


基于Linux的JNI動態(tài)函數(shù)注冊的評論 (共 條)

分享到微博請遵守國家法律
英超| 无为县| 景德镇市| 大方县| 喀什市| 墨脱县| 仁寿县| 信阳市| 龙南县| 包头市| 德江县| 合肥市| 张家川| 噶尔县| 巴林左旗| 弥勒县| 明光市| 思茅市| 石泉县| 黑龙江省| 城口县| 两当县| 肇东市| 拉孜县| 凉城县| 吉安市| 社旗县| 柳州市| 册亨县| 丽江市| 望谟县| 岳西县| 惠安县| 罗定市| 深水埗区| 山东省| 元朗区| 建宁县| 靖远县| 黑水县| 云安县|