(A) JavaToFun.java文件:
class JavaToFun
{
static {System.loadLibrary("JavaToFun");} native static void h(double a);
native static void tostr(String b);
}
(B) JavaToFun.h文件(javah JavaToFun命令产生):/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class JavaToFun */#ifndef _Included_JavaToFun
#define _Included_JavaToFun
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: JavaToFun
* Method: h
* Signature: (D)V
*/
JNIEXPORT void JNICALL Java_JavaToFun_h
(JNIEnv *, jclass, jdouble);/*
* Class: JavaToFun
* Method: tostr
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_JavaToFun_tostr
(JNIEnv *, jclass, jstring*);#ifdef __cplusplus
}
#endif
#endif
(c) JavaToFun.cpp文件:#include "JavaToFun.h"
#include<iostream.h>
//#include<iostream.h>
JNIEXPORT void JNICALL Java_JavaToFun_h(JNIEnv *, jclass,jdouble k)
{
cout<<k<<endl;
}
JNIEXPORT void JNICALL Java_JavaToFun_tostr(JNIEnv *, jclass, jstring c)
{
//int j=c.length;
//char a[]=c;
cout<<c;
}
(D) Test.java文件:
public class Test
{
public static void main(String args[])
{
String str=new String(args[0]);
double n=Double.parseDouble(args[1]);
System.out.print("这是Java程序直接输出:");
System.out.println(str+"="+n);
JavaToFun obj=new JavaToFun();
System.out.print("这是C++函数输出:");
obj.tostr(str);
obj.h(n);
}
}
以上JavaToFun.java调用JavaToFun.cpp的
JNIEXPORT void JNICALL Java_JavaToFun_tostr(JNIEnv *, jclass, jstring c)
函数,输出的字符串c(由Test.java的str传进去的) 怎么是一个16进制数:0x0007FAB8 啊????
关于java能识别的字符串类型jstring,在函数中如何转换为C++的字符串类型????
请高手指教!!!!!!!
class JavaToFun
{
static {System.loadLibrary("JavaToFun");} native static void h(double a);
native static void tostr(String b);
}
(B) JavaToFun.h文件(javah JavaToFun命令产生):/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class JavaToFun */#ifndef _Included_JavaToFun
#define _Included_JavaToFun
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: JavaToFun
* Method: h
* Signature: (D)V
*/
JNIEXPORT void JNICALL Java_JavaToFun_h
(JNIEnv *, jclass, jdouble);/*
* Class: JavaToFun
* Method: tostr
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_JavaToFun_tostr
(JNIEnv *, jclass, jstring*);#ifdef __cplusplus
}
#endif
#endif
(c) JavaToFun.cpp文件:#include "JavaToFun.h"
#include<iostream.h>
//#include<iostream.h>
JNIEXPORT void JNICALL Java_JavaToFun_h(JNIEnv *, jclass,jdouble k)
{
cout<<k<<endl;
}
JNIEXPORT void JNICALL Java_JavaToFun_tostr(JNIEnv *, jclass, jstring c)
{
//int j=c.length;
//char a[]=c;
cout<<c;
}
(D) Test.java文件:
public class Test
{
public static void main(String args[])
{
String str=new String(args[0]);
double n=Double.parseDouble(args[1]);
System.out.print("这是Java程序直接输出:");
System.out.println(str+"="+n);
JavaToFun obj=new JavaToFun();
System.out.print("这是C++函数输出:");
obj.tostr(str);
obj.h(n);
}
}
以上JavaToFun.java调用JavaToFun.cpp的
JNIEXPORT void JNICALL Java_JavaToFun_tostr(JNIEnv *, jclass, jstring c)
函数,输出的字符串c(由Test.java的str传进去的) 怎么是一个16进制数:0x0007FAB8 啊????
关于java能识别的字符串类型jstring,在函数中如何转换为C++的字符串类型????
请高手指教!!!!!!!
输出字符串呢????