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. 第一份PHP程序

    <?php list($ncase) = fscanf(STDIN,"%d"); $mod = 1000000007; for($n=0;$n<$ncase;++$n) ...

  2. jsp 通用获取所有表单值传后台

    新建一个js文件,自定义一个jquery 函数. 在jsp页面引用 下面为:自定义函数 $.fn.GetDivJson = function (prifix,orgModel) { var $oute ...

  3. 14.wamp自定义网站根目录

    1.首先打开Apache 中的配置文件httpd.conf crtl+f 搜索  documentroot  ,在找到的目录中将目录修改自己的网站的目录,注意\ 与/ 2.在向下移动,找到<Di ...

  4. 初识python(二)

    初识python(二) 1.变量 变量:把程序运行的中间结果临时的存在内存里,以便后续的代码调用. 1.1 声明变量: #!/usr/bin/env python # -*- coding: utf- ...

  5. 【CODEFORCES】 B. Random Teams

    B. Random Teams time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  6. spring整合问题分析之-Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

    1.异常分析 Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into ...

  7. exp导出一个表中符合查询条件的数据

    原文地址:exp导出一个表中符合查询条件的数据 作者:charsi 导出一个表中的部分数据,使用QUERY参数,如下导出select * from test where object_id>50 ...

  8. pandas(六)读写文本格式的数据

    pandas提供的将表格型数据读取为DataFrame对象的函数. 函数 说明 read_csv 从文件.URL.文件型对象中加载带分隔符的数据.默认分隔符为逗号. read_table 从文件.UR ...

  9. pandas(三)汇总和计算描述统计

    pandas对象有一些常用的数学和统计的方法,大部分都属于约简或汇总统计. SUM方法 DataFrame对象的sum方法,返回一个含有列小计的Series >>> df = Dat ...

  10. Hbase 学习笔记4----原理

    MapReduce 中如何处理HBase中的数据?如何读取HBase数据给Map?如何将结果存储到HBase中? Mapper类:包括一个内部类(Context)和四个方法(setup,map,cle ...