关键词:java,调用dll,java调用dll,c语言调用dll,c++调用dll
java调用dll或c++语言调用dll或c++调用的代码实例或so动态链接库 System.loadLibrary()
java调用dll代码:
public class Sample1 { public native int intMethod(int n); public native boolean booleanMethod(boolean bool); public native String stringMethod(String text); public native int intArrayMethod(int[] intArray); public static void main(String[] args) { System.loadLibrary("Sample1"); Sample1 sample = new Sample1(); int square = sample.intMethod(5); boolean bool = sample.booleanMethod(true); String text = sample.stringMethod("Java"); int sum = sample.intArrayMethod(new int[] {1, 2, 3, 4, 5, 8, 13}); System.out.println("intMethod: " + square); System.out.println("booleanMethod: " + bool); System.out.println("stringMethod: " + text); System.out.println("intArrayMethod: " + sum); } }
c语言调用dll:
#include "Sample1.h" #include <string.h> JNIEXPORT jint JNICALL Java_Sample1_intMethod (JNIEnv * env, jobject obj, jint num) { return num * num; } JNIEXPORT jboolean JNICALL Java_Sample1_booleanMethod (JNIEnv * env, jobject obj, jboolean boolean) { return !boolean; } JNIEXPORT jstring JNICALL Java_Sample1_stringMethod (JNIEnv * env, jobject obj, jstring string) { const char * str = ( * env)->GetStringUTFChars(env, string, 0); char cap[128]; strcpy(cap, str); ( * env)->ReleaseStringUTFChars(env, string, 0); return ( * env)->NewStringUTF(env, strupr(cap)); } JNIEXPORT jint JNICALL Java_Sample1_intArrayMethod (JNIEnv * env, jobject obj, jintArray array) { int i, sum = 0; jsize len = ( * env)->GetArrayLength(env, array); jint * body = ( * env)->GetIntArrayElements(env, array, 0); for (i = 0; i < len; ++i) { sum += body[i]; } ( * env)->ReleaseIntArrayElements(env, array, body, 0); return sum; }
c++调用dll:
#include "Sample1.h" #include <string.h> JNIEXPORT jint JNICALL Java_Sample1_intMethod (JNIEnv * env, jobject obj, jint num) { return num * num; } JNIEXPORT jboolean JNICALL Java_Sample1_booleanMethod (JNIEnv * env, jobject obj, jboolean boolean) { return !boolean; } JNIEXPORT jstring JNICALL Java_Sample1_stringMethod (JNIEnv * env, jobject obj, jstring string) { const char * str = env->GetStringUTFChars(string, 0); char cap[128]; strcpy(cap, str); env->ReleaseStringUTFChars(string, 0); return env->NewStringUTF(strupr(cap)); } JNIEXPORT jint JNICALL Java_Sample1_intArrayMethod (JNIEnv * env, jobject obj, jintArray array) { int i, sum = 0; jsize len = env->GetArrayLength(array); jint * body = env->GetIntArrayElements(array, 0); for (i = 0; i < len; ++i) { sum += body[i]; } env->ReleaseIntArrayElements(array, body, 0); return sum; }
来源搞代码网《java调用dll或c语言调用dll或c++调用的代码实例或so动态链接库 System.loadLibrary()》http://www.gaodaima.com/68599.html