JNI详解001_c++

public class HelloWorld {
   public native void print(String str);  //声明本地方法
   
   public static void main(String[] args) {
	   new HelloWorld().print("world!");
	   //System.out.println(System.getProperty("java.library.path"));
   }
   
   static{
	   //System.loadLibrary("helloworld"); // 加载库文件
	   System.load("/Users/zhaoshun/solibs/libhello.so");
   }
}

/**
 *  
 * Class:     jni_sample_HelloWorld
 * Method:    print
 * Signature: (Ljava/lang/String;)V
 *
  JNIEXPORT void JNICALL Java_jni_sample_HelloWorld_print(JNIEnv *, jobject, jstring);
 */



#include <iostream.h>
#include <jni.h>
#include "jni_sample_HelloWorld.h"
using namespace std;

JNIEXPORT void JNICALL Java_jni_sample_HelloWorld_print(JNIEnv *env, jobject obj, jstring name)
{
	const char* pname = env->GetStringUTFChars(name,NULL);
	cout <<"Hello,"<< pname << endl;
}

/*
c文件中的这么写的
str = (*env)->GetStringUTFChars(env,prompt,NULL);  
*/



编译
g++ -dynamiclib -o libhello.so HelloWorld.cpp -framework JavaVM -I/System/Library/Frameworks/JavaVM.framework/Headers


运行结果:
Hello,world!



猜你喜欢

转载自abc20899.iteye.com/blog/1865503