• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

java调用dll或c语言调用dll或c++调用的代码实例或so动态链接库 System.loadLibrary()

c++ 海叔叔 6个月前 (12-13) 18次浏览 已收录 0个评论

关键词: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


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址