iihero@ChinaUnix, ehero.[iihero] 数据库技术的痴迷爱好者. 您可以通过iihero AT qq.com联系到我 以下是我的三本图书: Sybase ASE in Action, Oracle Spatial及OCI高级编程, Java2网络协议内幕
分类: Java
2013-07-17 14:30:53
package jnitest;
public class HelloWorld {
public HelloWorld() {
}
static {
System.loadLibrary("helloworld");
}
public native void displayHelloWorld();
public native void displayString(String sz);
public native String echoString(String sz);
public static void main(String[] args) {
HelloWorld helloworld = new HelloWorld();
String t = helloworld.echoString("测试一下中文");
System.out.println(t);
}
}
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class jnitest_HelloWorld */
#ifndef _Included_jnitest_HelloWorld
#define _Included_jnitest_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: jnitest_HelloWorld
* Method: echoString
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_jnitest_HelloWorld_echoString
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
#include <jni.h>
#include "jnitest_HelloWorld.h"
#include <stdio.h>
JNIEXPORT jstring JNICALL Java_jnitest_HelloWorld_echoString
(JNIEnv *env, jobject obj, jstring sz)
{
return sz;
}
@echo off
rem
rem Root of Visual Developer Studio Common files.
set VSCommonDir=D:msdev
rem
rem Root of Visual Developer Studio installed files.
rem
set MSDevDir=D:msdevCommonmsdev98
rem
rem Root of Visual C++ installed files.
rem
set MSVCDir=D:msdevVC98
rem
rem VcOsDir is used to help create either a Windows 95 or Windows NT specific path.
rem
set VcOsDir=WIN95
if "%OS%" == "Windows_NT" set VcOsDir=WINNT
rem
echo Setting environment for using Microsoft Visual C++ tools.
rem
if "%OS%" == "Windows_NT" set PATH=%MSDevDir%BIN;%MSVCDir%BIN;%VSCommonDir%TOOLS%VcOsDir%;%VSCommonDir%TOOLS;%MSVCDir%DEBUG;%VSCommonDir%OSSYSTEM;%PATH%
if "%OS%" == "" set PATH="%MSDevDir%BIN";"%MSVCDir%BIN";"%VSCommonDir%TOOLS%VcOsDir%";"%VSCommonDir%TOOLS";"%windir%SYSTEM";"%PATH%";%VSCommonDir%OSSYSTEM
set INCLUDE=%MSVCDir%ATLINCLUDE;%MSVCDir%INCLUDE;%MSVCDir%MFCINCLUDE;%INCLUDE%
set LIB=%MSVCDir%LIB;%MSVCDir%MFCLIB;%LIB%
rem set VcOsDir=
rem set VSCommonDir=
rem modified by xionghe, antpath, classpath etc.
set path=%path%;d:/jakarta-ant/bin
set JAGUAR_JDK13=d:/sharedjdk1.3.1_11
set JAGUAR_JDK14=d:/sharedjdk1.4.2_06
set JAGUAR_JDK15=d:/sharedjdk1.5.0_01
set JAVA_HOME=%JAGUAR_JDK14%
set PATH=%JAVA_HOME%bin;%JAVA_HOME%/jre/bin;%PATH%
set OLD_CLASSPATH=%CLASSPATH%
set CLASSPATH=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/jre/lib/rt.jar
set CLASSPATH=%CLASSPATH%;%OLD_CLASSPATH%
set INCLUDE=%JAVA_HOME%/include;%JAVA_HOME%/include/win32;%INCLUDE%
start cmd
public class Prompt {
public Prompt() {
}
private native String getLine(String prompt);
static {
System.loadLibrary("helloworld");
}
public static void main(String[] args) {
Prompt prompt = new Prompt();
String input = prompt.getLine("Type a line: ");
System.out.println("user typed: " + input);
}
}
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Prompt */
#ifndef _Included_Prompt
#define _Included_Prompt
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Prompt
* Method: getLine
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_Prompt_getLine
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
#include <jni.h>
#include "jnitest_HelloWorld.h"
#include "Prompt.h"
#include <stdio.h>
JNIEXPORT jstring JNICALL Java_jnitest_HelloWorld_echoString
(JNIEnv *env, jobject obj, jstring sz)
{
return sz;
}

/**
* Prompt Dll function entry
*/
JNIEXPORT jstring JNICALL Java_Prompt_getLine
(JNIEnv *env, jobject obj, jstring prompt)
{
char buf[128];
const char *str; //char is just the jbyte
str = (env)->GetStringUTFChars(prompt, NULL);
if (str == NULL) {
return NULL; /* OutOfMemoryError already thrown */
}
printf("%s", str);
(env)->ReleaseStringUTFChars(prompt, str);
/* We assume here that the user does not type more than
* 127 characters */
scanf("%s", buf);
return (env)->NewStringUTF(buf);
}