1、VC6(CPP)的DLL代码:

#include<stdio.h>
#include "jniZ_JNIjw03.h" JNIEXPORT void JNICALL Java_jniZ_JNIjw03_SayHello (JNIEnv * env, jobject obj)
{
printf("Java_jniZ_JNIjw03_SayHello - 1\n"); SYSTEMTIME systime; //保存时间的结构体
GetLocalTime(&systime); //本地时间
// printf("今天是:");
// printf("%d年%d月%d日\n",systime.wYear,systime.wMonth,systime.wDay);
// printf("现在时间是:");
printf("==> %d:%d:%d:%d\n",systime.wHour,systime.wMinute,systime.wSecond,systime.wMilliseconds);
// printf("星期:%d\n\n",systime.wDayOfWeek);
// GetSystemTime(&systime); //系统时间
// printf("现在时间是:");
// printf("%d:%d:%d:%d\n",systime.wHour,systime.wMinute,systime.wSecond,systime.wMilliseconds); // 获取obj中对象的class对象
jclass clazz = env->GetObjectClass(obj); // 获取Java中的number字段的id(最后一个参数是 属性number 的签名)
jfieldID id_number = env->GetFieldID(clazz, "number", "I"); // 获取number的值
jint number = env->GetIntField(obj, id_number); // 输出到控制台
printf("In C++ number : %d\n", number); // 修改number的值为100,这里要注意的是jint对应C++是long型 ∴后面要加一个"L"
env->SetIntField(obj, id_number, 100L); printf("Java_jniZ_JNIjw03_SayHello - 2\n");
}

2、Java代码:

package jniZ;

import java.text.SimpleDateFormat;
import java.util.Date; public class JNIjw03
{
public int number = 0;//定义一个属性 //定义一个本地方法
public native void SayHello(); public static void main(String[] args)
{
//调用动态链接库
System.loadLibrary("JNIjwVC6_03");
JNIjw03 jni03 = new JNIjw03();
jni03.SayHello();
System.out.println("In Java number : "+jni03.number);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");//设置日期格式
System.out.println("--> "+df.format(new Date()));// new Date()为获取当前系统时间
/*
ZC: 控制台输出:
In Java number : 100
Java_jniZ_JNIjw03_SayHello - 1
In C++ number : 0
Java_jniZ_JNIjw03_SayHello - 2
ZC: 总感觉,这个 java的输出 和 C++的输出 的顺序,比较诡异...
*/
}
}

3、Java控制台输出:

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

4、

5、

JNIjw03的更多相关文章

随机推荐

  1. [刷题]ACM ICPC 2016北京赛站网络赛 D - Pick Your Players

    Description You are the manager of a small soccer team. After seeing the shameless behavior of your ...

  2. MVC4 WebAPI中如何返回一张图片

    public HttpResponseMessage Get(string imageName, int width, int height) { Image img = GetImage(image ...

  3. transaction 数据库事务 roolback 回滚

    事务是恢复和并发控制的基本单位 https://baike.baidu.com/item/数据库事务/9744607 事务有三种模型: 1.隐式事务是指每一条数据操作语句都自动地成为一个事务,事务的开 ...

  4. php自定义函数: 下载本地服务器的大文件

    // 使用方法 $file_path = './a.zip'; // 只能是本地服务器文件, 多大的文件都支持!! down_file($file_path); // 函数参数: 服务器文件路径,下载 ...

  5. python 三行代码实现快速排序

    python 三行代码实现快速排序 最近在看 python cookbook , 里面的例子很精彩,这里就帮过来,做个备忘录 主要利用了行数的递归调用和Python的切片特性,解释一下每行代码的含义: ...

  6. ORACLE性能优化- Buffer cache 的调整与优化

    Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候,将会造成更多的 free buffer waits事件. 下面将具 ...

  7. oradebug工具使用3(转载)

    1 oradebug介绍 oradebug主要是给oracle支持人员使用的,尽管很早便有,但oracle官网很少有记载.他是个sql*plus命令行工具,有sysdba的权限就可以登入,无需特别设置 ...

  8. iOS学习之七牛云存储应用

    前言 七牛云存储,是专为移动时代开发者打造的数据管理平台,为互联网网站和移动App提供数据的在线托管.传输加速以及图片.音视频等富媒体的云处理服务. 七牛云官网http://www.qiniu.com ...

  9. vue组件的is特性

    组件功能是vue项目的一大特色.组件可以扩展html元素,可以封装可重用的代码,可以增加开发效率.它是自定义元素,vue.js的编译器为它添加特殊功能.有些情况,组件也可以是原生HTML元素的形式,以 ...

  10. C#:DateTime格式增减时间

    DateTime time = DateTime.Now(); DateTime XMinutesrLater = time.AddMinutes(X); // X分钟以后的时间,即在当前时间基础上增 ...