在eclipse中建一項目,建一class
1?packageesmart.colfile.parse;2?3?publicclassTestHello?{4?static{5?System.loadLibrary("TestHello");6?}7?8?publicstaticnativevoidhello(String?msg);9?10?publicstaticvoidmain(String[]?args)?{11?12?hello("Hello,Kimm!");13?14?}15?}
F5刷新一下eclipse項目,讓他編譯一下(其實保存時也就編譯了)
找到項目類存放目錄如?G:\work\eclipse\test\bin
找到javah.exe ,可以配置到環境變量 ,方便調用
在命令行中輸入
cd G:\work\eclipse\test\bin
cd g:
E:\tools\Java\jdk1.6.0_11\bin\javah.exe -classpath . -jni esmart.colfile.parse.TestHello
執行完成后在項目bin目錄下就生成一個?esmart_colfile_parse_TestHello.h?文件,把這個文件給c++項目引用,并實現其中的方法
VS2008中 工具 - 選項 - 項目和解決方案 - VC++目錄 要增加?E:\tools\Java\jdk1.6.0_11\include\win32?和?E:\tools\Java\jdk1.6.0_11\include 具體目錄根據本地JDK安裝情況
eclipse 項目右鍵 properties 里面 設置 java build path 中的 native library location 到 VC項目的發布目錄
VC中
打開StdAfx.h文件,再最后面添加:
#include
#include "javah生成的.h"
cpp文件中實現 .h 中的方法
VC++項目現在基本都是UNICODE
1?JNIEXPORTvoidJNICALL?Java_esmart_colfile_parse_TestHello_hello(JNIEnv*env,?jclass?obj,?jstring?jMsg?,?jint?)2?{3?4?//const?char?*strMsgPtr?=?env->GetStringUTFChars(?jMsg?,?0);5?6?constWCHAR*strMsgPtr=(WCHAR*)env->GetStringChars(jMsg?,0);7?8?MessageBox(0,?strMsgPtr,L"Message?box?from?VC++",0);9?10?env->ReleaseStringChars(jMsg,?(jchar*)strMsgPtr);11?//env->ReleaseStringUTFChars(?jMsg,?strMsgPtr);12?13?}