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. view简写 TemplateView.as_view()

    view简写 TemplateView.as_view() https://code.ziqiangxuetang.com/django/django-generic-views.html (1)如果 ...

  2. TempData、ViewData和ViewBag异同

    Data ViewData ViewBag都可以用来保存数据. 它们之间的区别如下: TempData:保存在Session中,Controller每次执行请求的时候,会从Session中先获取Tem ...

  3. javascript自定义属性的应用

    你知道吗?JavaScript可以为任何HTML元素添加任意的自定义属性,而且你可能无意中已经使用过自定义属性了,那么自定义属性通常有哪些应用呢? 1.想用“匹配”.对应关系的时候就用索引值 2.同时 ...

  4. Redis资料汇总(转)

    原文:Redis资料汇总专题 很多朋友反映,说NoSQLFan上的资料不少,但是要找到自己实用的太难,于是萌生做这样一个专题的想法.通过将不同NoSQL产品从入门到精通的各种资料进行汇总,希望能够让大 ...

  5. django--之登录表单提交

    前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  6. vue组件的is特性

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

  7. Java并发(3):volatile及Java内存模型

    Java 语言中的 volatile 变量可以被看作是一种“程度较轻的 synchronized“:与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但 ...

  8. C# 复杂算法

    1.添加命名空间引用using Microsoft.JScript; //formula 是公式如:(1+2)*3/10 private double GetComputeValueByStringF ...

  9. Java技术学习路线

    转载 作者:David 链接:https://www.zhihu.com/question/25255189/answer/86898400来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...

  10. pytharm提示过期 License Activation 解决办法

    遇到如下问题: 打开网站:  http://idea.lanyus.com/   next next ok