1、VC6(CPP)的DLL代码:

  1. #include<stdio.h>
  2. #include "jniZ_JNIjw02.h"
  3.  
  4. JNIEXPORT void JNICALL Java_jniZ_JNIjw02_TestZ (JNIEnv * env, jobject obj)
  5. {
  6. printf("Java_jniZ_JNIjw02_TestZ - 1\n");
  7.  
  8. // ∵ TestZ() 不是静态函数,∴传进来的就是调用这个函数的对象.
  9. // 否则就传入一个jclass对象表示native方法所在的类
  10. jclass jni02_clazz = env->GetObjectClass(obj);
  11. jfieldID fieldID_prop = env->GetFieldID(jni02_clazz, "propertyZ", "I");
  12. jmethodID methodID_func = env->GetMethodID(jni02_clazz, "FunctionZ", "(ILjava/util/Date;[I)I");
  13. env->CallIntMethod(obj, methodID_func, 0L, NULL, NULL); // invoke !
  14.  
  15. printf("Java_jniZ_JNIjw02_TestZ - 2\n");
  16. }

2、Java代码:

  1. package jniZ;
  2.  
  3. import java.util.Date;
  4.  
  5. public class JNIjw02
  6. {
  7. public int propertyZ;
  8. public int FunctionZ(int _foo, Date _date, int[] _arr)
  9. {
  10. System.out.println("FunctionZ");
  11. return 0;
  12. }
  13. public native void TestZ();
  14.  
  15. public static void main(String[] args)
  16. {
  17. System.loadLibrary("JNIjwVC6_02");
  18. JNIjw02 jni02 = new JNIjw02();
  19. jni02.TestZ();
  20.  
  21. /*
  22. ZC: 为什么打印的顺序是这样的? :
  23. FunctionZ
  24. Java_jniZ_JNIjw02_TestZ - 1
  25. Java_jniZ_JNIjw02_TestZ - 2
  26. ZC: 个人觉得应该是这样啊 :
  27. Java_jniZ_JNIjw02_TestZ - 1
  28. FunctionZ
  29. Java_jniZ_JNIjw02_TestZ - 2
  30. */
  31. }
  32. }

3、Java控制台输出:

  1. FunctionZ
  2. Java_jniZ_JNIjw02_TestZ - 1
  3. Java_jniZ_JNIjw02_TestZ - 2

4、

5、

JNIjw02的更多相关文章

  1. JNI_Z_03_类中的字段和方法的签名

    1. Java类型 相应的签名 例子 boolean Z byte B char C short S int I long L float F double D void V Object L用&qu ...

随机推荐

  1. net.mvc中并发限制

    浏览器限制 会话限制 线程限制 这篇文章讲的很详细: https://weblogs.asp.net/imranbaloch/concurrent-requests-in-asp-net-mvc 明白 ...

  2. mysql 中用户默认密码加密问题

    问题描述: 在mysql中 user表中新增用户默认密码为123456,但是在数据库中显示不能为明文,而mysql的默认字段不能用函数 解决方法: 用触发器 delimiter | drop trig ...

  3. 剑指Offer——旋转数组的最小数字

    题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一 ...

  4. django-Query Ajax 实例 ($.ajax、$.post、$.get)

    Jquery在异步提交方面封装的很好,直接用AJAX非常麻烦,Jquery大大简化了我们的操作,不用考虑浏览器的诧异了. 推荐一篇不错的jQuery Ajax 实例文章,忘记了可以去看看,地址为:ht ...

  5. django的cookie和session以及缓存

    cookie和session cookie和session的作用: cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话.两者最大的区别是cookie的信息是存放在浏览 ...

  6. 我的Android进阶之旅------>android Button上面的英文字符串自动大写的问题解决

    今天碰到一个关于Button的问题:android Button上面的英文字符串会自动变成大写,运行的Android 5.1版本,如下图所示: 图1:Button 图2:TextView 这个Butt ...

  7. Codeforce 475 C. Kamal-ol-molk&#39;s Painting

    从最左上的点開始枚举长宽.... C. Kamal-ol-molk's Painting time limit per test 2 seconds memory limit per test 256 ...

  8. HTML中的SEO和HTML语义化

    SEO 1) <title>网站SEO标题</title>, 百度搜索出来的记录, 其标题基本就提取至网站的title, 标签, 因此标题起的好, 不论对点击率还是SEO都至关 ...

  9. C++异常安全、copy and swap

    异常安全的代码是指,满足两个条件 1异常中立性 : 是指当你的代码(包括你调用的代码)引发异常时,这个异常 能保持原样传递到外层调用代码.(异常中立,就是指任何底层的异常都会抛出到上层,也就相当于是异 ...

  10. Python(递归)

    递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以 ...