1、VC6(CPP)的DLL代码:

  1. #include<stdio.h>
  2. #include "jniZ_JNIjw03.h"
  3.  
  4. JNIEXPORT void JNICALL Java_jniZ_JNIjw03_SayHello (JNIEnv * env, jobject obj)
  5. {
  6. printf("Java_jniZ_JNIjw03_SayHello - 1\n");
  7.  
  8. SYSTEMTIME systime; //保存时间的结构体
  9. GetLocalTime(&systime); //本地时间
  10. // printf("今天是:");
  11. // printf("%d年%d月%d日\n",systime.wYear,systime.wMonth,systime.wDay);
  12. // printf("现在时间是:");
  13. printf("==> %d:%d:%d:%d\n",systime.wHour,systime.wMinute,systime.wSecond,systime.wMilliseconds);
  14. // printf("星期:%d\n\n",systime.wDayOfWeek);
  15. // GetSystemTime(&systime); //系统时间
  16. // printf("现在时间是:");
  17. // printf("%d:%d:%d:%d\n",systime.wHour,systime.wMinute,systime.wSecond,systime.wMilliseconds);
  18.  
  19. // 获取obj中对象的class对象
  20. jclass clazz = env->GetObjectClass(obj);
  21.  
  22. // 获取Java中的number字段的id(最后一个参数是 属性number 的签名)
  23. jfieldID id_number = env->GetFieldID(clazz, "number", "I");
  24.  
  25. // 获取number的值
  26. jint number = env->GetIntField(obj, id_number);
  27.  
  28. // 输出到控制台
  29. printf("In C++ number : %d\n", number);
  30.  
  31. // 修改number的值为100,这里要注意的是jint对应C++是long型 ∴后面要加一个"L"
  32. env->SetIntField(obj, id_number, 100L);
  33.  
  34. printf("Java_jniZ_JNIjw03_SayHello - 2\n");
  35. }

2、Java代码:

  1. package jniZ;
  2.  
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5.  
  6. public class JNIjw03
  7. {
  8. public int number = 0;//定义一个属性
  9.  
  10. //定义一个本地方法
  11. public native void SayHello();
  12.  
  13. public static void main(String[] args)
  14. {
  15. //调用动态链接库
  16. System.loadLibrary("JNIjwVC6_03");
  17. JNIjw03 jni03 = new JNIjw03();
  18. jni03.SayHello();
  19. System.out.println("In Java number : "+jni03.number);
  20. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");//设置日期格式
  21. System.out.println("--> "+df.format(new Date()));// new Date()为获取当前系统时间
  22. /*
  23. ZC: 控制台输出:
  24. In Java number : 100
  25. Java_jniZ_JNIjw03_SayHello - 1
  26. In C++ number : 0
  27. Java_jniZ_JNIjw03_SayHello - 2
  28. ZC: 总感觉,这个 java的输出 和 C++的输出 的顺序,比较诡异...
  29. */
  30. }
  31. }

3、Java控制台输出:

  1. In Java number : 100
  2. --> 2016-04-26 17:03:00.043
  3. Java_jniZ_JNIjw03_SayHello - 1
  4. ==> 17:3:0:23
  5. In C++ number : 0
  6. Java_jniZ_JNIjw03_SayHello - 2

4、

5、

JNIjw03的更多相关文章

随机推荐

  1. python之MySQL学习——输出指定条件的结果集

    # 引入pymysql模块 import pymysql as pm # 数据库连接 db = pm.connect(host=",database='task', charset='utf ...

  2. 创建超小的Golang docker 镜像

    原文: http://colobu.com/2015/10/12/create-minimal-golang-docker-images/ 本文对于创建超小的镜像非常有用 Docker是PaaS供应商 ...

  3. 巨蟒python全栈开发-第14天 内置函数2 递归 二分查找

    一.今日内容总览 1.内置函数补充 repr() 显示出字符串的官方表示形式 chr() arscii码中的字,转换成位置 ord() arscii码中的位置,转换成字2.递归 自己调用自己 两个口: ...

  4. FW: AMD, CMD, CommonJS和UMD

    javascript 我是豆腐不是渣 4月5日发布 推荐 2 推荐 收藏 32 收藏,486 浏览 今天由于项目中引入的echarts的文件太大,requirejs经常加载超时,不得不分开来加载ech ...

  5. 兼容获取元素当前样式 currentStyle || getComputedStyle

    function getStyle(ele, attr) { return ele.currentStyle ? ele.currentStyle[attr] : window.getComputed ...

  6. Redis数据存储优化机制(转)

    原文:Redis学习笔记4--Redis数据存储优化机制 1.zipmap优化hash: 前面谈到将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象.省内存的原因是新建一个h ...

  7. 配置 Docker 镜像下载的本地 mirror 服务

    Docker registry 工具如今已经非常好的支持了 mirror 功能,使用它能够配置一个本地的 mirror 服务.将 pull 过的镜像 cache 在本地.这样其他主机再次 pull 的 ...

  8. MySQL查询操作

    查询执行路径中的组件:查询缓存.解析器.预处理器.优化器.查询执行引擎.存储引擎SELECT语句的执行流程: FROM Clause --> WHERE Clause --> GROUP ...

  9. boost智能指针总结

    智能指针是一种具备指针类似行为的对象,当不在需要它的时候自动删除其引用的c++对象.直接点说就是自动析构C++对象. boost提供了6种智能指针,如下所示: scoped_ptr <boost ...

  10. jQuery Mobile 手动显示ajax加载器

    在jquery mobile开发中,经常需要调用ajax方法,异步获取数据,如果异步获取数据方法由于网速等等的原因,会有一个反应时间,如果能在点击按钮后数据处理期间,给一个正在加载的提示,客户体验会更 ...