国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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ù)注冊的評論 (共 條)

分享到微博請遵守國家法律
思茅市| 蕲春县| 中阳县| 茂名市| 水城县| 枞阳县| 彰化市| 宝应县| 阳信县| 响水县| 当涂县| 四会市| 彭泽县| 桃源县| 张家川| 明星| 江安县| 安多县| 萨嘎县| 乌恰县| 玉门市| 麻栗坡县| 富宁县| 贺州市| 苏州市| 临汾市| 文山县| 怀柔区| 临澧县| 合山市| 浦北县| 望都县| 郸城县| 天水市| 博白县| 临高县| 房山区| 印江| 芦山县| 阜阳市| 东乡族自治县|