registernativelibrary.cpp
来自「< Professional Java,JDK 5 Edition>」· C++ 代码 · 共 84 行
CPP
84 行
// RegisterNativeLibrary.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#include "..\RegisterNativeExample.h"
jboolean JNICALL bubbleSort(JNIEnv *env, jobject obj, jintArray intArrayToSort)
{
jint *intArray;
jboolean isCopy;
int i, j, num;
intArray = env->GetIntArrayElements(intArrayToSort, &isCopy);
if(intArray == NULL) {
return(JNI_FALSE);
}
for(i=0; i<env->GetArrayLength(intArrayToSort)-1; i++) {
for(j=i; j<env->GetArrayLength(intArrayToSort); j++) {
if(intArray[i] > intArray[j]) {
num = intArray[i];
intArray[i] = intArray[j];
intArray[j] = num;
}
}
}
env->ReleaseIntArrayElements(intArrayToSort, intArray, 0);
return(JNI_TRUE);
}
jboolean JNICALL insertionSort(JNIEnv *env, jobject obj, jintArray intArrayToSort)
{
jint *intArray;
jboolean isCopy;
int i, j, num;
intArray = env->GetIntArrayElements(intArrayToSort, &isCopy);
if(intArray == NULL) {
return(JNI_FALSE);
}
for(i=1; i<env->GetArrayLength(intArrayToSort); i++) {
num = intArray[i];
for(j=i-1; j >= 0 && (intArray[j] > num); j--) {
intArray[j+1] = intArray[j];
}
intArray[j+1] = num;
}
env->ReleaseIntArrayElements(intArrayToSort, intArray, 0);
return(JNI_TRUE);
}
JNIEXPORT void JNICALL Java_RegisterNativeExample_setSort
(JNIEnv *env, jobject obj, jint which)
{
JNINativeMethod sortMethod;
sortMethod.name = "sortNumbers";
sortMethod.signature = "([I)Z";
if(which == 1) {
sortMethod.fnPtr = bubbleSort;
} else {
sortMethod.fnPtr = insertionSort;
}
env->RegisterNatives(env->GetObjectClass(obj), &sortMethod, 1);
}
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?