锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲视频免费在线观看,久久精品国产亚洲av日韩,久久精品国产亚洲http://www.tkk7.com/vagasnail/category/42602.html璇誨巻鍙層佺湅灝忚銆佸啓紼嬪簭閮芥槸鎴戞墍鐖便?/description>zh-cnFri, 06 Nov 2009 19:39:23 GMTFri, 06 Nov 2009 19:39:23 GMT60JNI瀛︿範璁板綍http://www.tkk7.com/vagasnail/articles/301124.htmlvagasnailvagasnailWed, 04 Nov 2009 10:44:00 GMThttp://www.tkk7.com/vagasnail/articles/301124.htmlhttp://www.tkk7.com/vagasnail/comments/301124.htmlhttp://www.tkk7.com/vagasnail/articles/301124.html#Feedback0http://www.tkk7.com/vagasnail/comments/commentRss/301124.htmlhttp://www.tkk7.com/vagasnail/services/trackbacks/301124.html1錛?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽 JNI鏄?/span>Java涓庢湰鍦?/span>C/C++浠g爜鐩鎬簰鎿嶄綔鐨勪竴縐嶆柟妗堛?/span>

2錛?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽 瑕佷嬌鐢?/span>JNI錛岄渶瑕侊細

1)錛屽湪Java婧愮▼搴忎腑浣跨敤native鍏抽敭瀛楀0鏄庝竴涓柟娉曘?/span>

聽聽聽聽聽聽聽聽 濡傦細public native void callCppFunction();

2錛夛紝鐒跺悗鍦ㄥ懡浠よ鎻愮ず絎︿笅浣跨敤javah榪欎釜鍛戒護鏉ョ敓鎴愬叧浜?/span>JNI鐨勬湰鍦板ご鏂囦歡銆?/span>

濡傦細javah test.jni.MainArrayTest

聽聽聽聽聽聽聽聽 3錛夛紝鍦?/span>VC Studio涓緩绔嬩竴涓?/span>DLL宸ョ▼錛屾嫹璐濊繖涓ご鏂囦歡鍒拌宸ョ▼鐩綍涓嬶紝鎷瘋礉

聽聽聽聽聽聽聽聽 %JAVA_HOME%"include涓嬮潰鐨?/span>jni.h銆?/span>jni_md.h鍒板伐紼嬬洰褰曚笅錛屾垨鑰呭姞鍒扮郴緇熺洰涓嬶紝鍏蜂綋闇瑕佹嫹璐濈殑澶存枃浠惰繕瑕佸叿浣撶爺絀躲?/span>

4錛夛紝寤轟竴涓?/span>cpp婧愭枃浠訛紝瀹炵幇鐢熸垚鐨勫ご鏂囦歡涓0鏄庣殑鍑芥暟銆?/span>

5錛夛紝鍏蜂綋鍚勭鍑芥暟鍙婃暟鎹被鍨嬬殑浣跨敤濡備笅錛氬叿浣撹嚜宸辯爺絀訛細

l聽聽聽聽聽聽 綆鍗曟柟娉曡皟鐢紝鍩烘湰鏁版嵁綾誨瀷鐨勪嬌鐢?/span>

jclass clazz_TestNative = env->GetObjectClass(obj);

/*聽聽聽聽聽聽

jfieldID id_number = env->GetFieldID(clazz_TestNative,

聽聽聽聽聽聽聽聽聽聽 "number", "I");

jint number = env->GetIntField(obj, id_number);

cout<<number<<endl;

env->SetIntField(obj, id_number, 1000L);

*/

//聽聽聽聽聽聽聽 jmethodID id_max = env->GetMethodID(clazz_TestNative, "max", "(DD)D");

//聽聽聽聽聽聽聽 jdouble maxValue = env->CallDoubleMethod(obj, id_max, 3.14, 3.15);

//聽聽聽聽聽聽聽 cout<<maxValue<<endl;

jfieldID id_person = env->GetFieldID(clazz_TestNative, "person", "Ltest/jni/Father;");

jobject person = env->GetObjectField(obj, id_person);

jclass clazz_Father = env->FindClass("test/jni/Father");

jmethodID id_Father_Function = env->GetMethodID(clazz_Father, "function", "()V");

env->CallVoidMethod(person, id_Father_Function);

env->CallNonvirtualObjectMethod(person,clazz_Father, id_Father_Function);

l聽聽聽聽聽聽 瀵硅薄鐨勪嬌鐢?/span>

jclass clazz_date = env->FindClass("java/util/Date");

jmethodID outputDate_ID = env->GetMethodID(clazz_date, "<init>", "()V");

jobject date_obj = env->NewObject(clazz_date, outputDate_ID);

jmethodID mid_date_getTime = env->GetMethodID(clazz_date, "getTime", "()J");

unsigned times = env->CallLongMethod(date_obj, mid_date_getTime);

//聽聽聽聽聽聽聽 printf("%u",times);

cout<<times<<endl;

l聽聽聽聽聽聽 瀛楃涓茬殑綆鍗曞疄鐢?/span>

jfieldID fid_msg = env->GetFieldID(env->GetObjectClass(obj), "message", "Ljava/lang/String;");

jstring j_msg = (jstring)env->GetObjectField(obj, fid_msg);

//const jchar *p_jst = env->GetStringChars(j_msg, NULL);

//MessageBoxW(NULL,(const wchar_t *)p_jst, L"Title", MB_OK);

jint len = env->GetStringLength(j_msg);

jchar *j_buf = new jchar[len+1];

j_buf[len] = L'"0';

env->GetStringRegion(j_msg, 0, len, j_buf);聽聽聽聽聽聽

wstring wstr((const wchar_t *)j_buf);

//env->ReleaseStringChars(j_msg, j_buf);//涓嶈兘閲婃斁瀛楃鏁扮粍鍟?/span>

delete []j_buf;

std::reverse(wstr.begin(), wstr.end());

jstring jnewStr = env->NewString((const jchar*)wstr.c_str(), wstr.size());

env->SetObjectField(obj, fid_msg, jnewStr);

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽

l聽聽聽聽聽聽 鏁扮粍鐨勪嬌鐢?/span>

jfieldID fid_arrays = env->GetFieldID(env->GetObjectClass(obj), "arrays", "[I");

jintArray jint_arr = (jintArray)env->GetObjectField(obj, fid_arrays);

jint *int_arr = env->GetIntArrayElements(jint_arr, NULL);

jsize len = env->GetArrayLength(jint_arr);

for(int i = 0; i < len; ++i)

{

//聽聽聽聽聽聽 cout<<int_arr[i]<<endl;

}

sort(int_arr, int_arr + len, less_second);

env->ReleaseIntArrayElements(jint_arr, int_arr, /*JNI_ABORT/JNI_COMMIT/0*/0);

}

bool less_second(const int & m1, const int & m2)

{

聽聽聽聽聽聽聽 return m1 > m2;

}

涓婇潰瑕佹敞鎰忓湪JNI涓Java涓暟鎹被鍨嬬殑鏄犲皠錛岃澶存枃浠剁殑澹版槑銆?/span>

榪樻湁娉ㄦ剰Java涓叧浜庡璞$被鍨嬬殑琛ㄧず鏂規硶姣斿錛?/span>int I, boolean Z,

Object L<綾葷殑瀹屾暣鍚嶇О錛屾敞鎰忓寘鍚嶄互/鍒嗛殧>;錛屾暟緇?/span>[<鏁版嵁綾誨瀷>銆?/span>

濡傛灉涓嶇煡閬撳彲浠ヤ嬌鐢?/span>javap榪欎釜鍙嶇紪璇戝櫒銆?/span>

聽聽聽聽聽聽聽聽

聽聽聽聽聽聽聽聽 6錛夈佹洿澶氳祫鏂欙紝灝?/span>Java鎵嬪唽銆?/span>

聽聽聽聽聽聽聽聽 7錛夈佺紪璇戯紝鐢熸垚DLL銆傚皢DLL鐨勬枃浠惰礬寰勫姞鍒?/span>Path鐜鍙橀噺涓嬶細

聽聽聽聽聽聽聽聽 8錛夈佸湪Main鍑芥暟涓姞杞藉姩鎬佸簱銆?/span>

濡傦細System.loadLibrary("TestNative4")錛屾敞鎰忎笉瑕?/span>DLL鎵╁睍鍚嶏紝涓轟簡璺ㄥ鉤鍙板槢錛?/span>

9錛夈佸鏋滀嬌鐢ㄧ殑鏄?/span>eclipse涔嬬被鐨?/span>IDE宸ュ叿錛岃閲嶅惎錛屽洜涓鴻綾誨伐鍏峰湪鍚姩鏃訛紝榛樿璇誨彇浜嗙郴緇熷彉閲忥紝浣嗘槸涓嶄細鐩戣鍙橀噺鐨勫彉鍖栥?/span>

10錛夈佹敞鎰忓湪JNI涓Java瀵硅薄鐨勫紩鐢ㄣ備笉鐒跺瀮鍦懼洖鏀跺皢浼氫駭鐢熼棶棰樸傛敞鎰忓叏灞寮曠敤錛屽眬閮ㄥ紩鐢ㄣ佸急鍏ㄥ眬寮曠敤鐨勪嬌鐢ㄣ?/span>

聽聽聽聽聽聽聽聽聽聽 灞閮ㄥ紩鐢紝涔熷氨鏄湰鍦版柟娉曚腑榪斿洖寮曠敤銆傚簲璇ヤ嬌鐢?/span>DeleteLocalRef閲婃斁璇ュ紩鐢ㄣ?/span>NewLocalRef鍒涘緩銆傝繕鐢ㄥ緢澶氭柟寮忓垱寤恒?/span>

聽聽聽聽聽聽聽聽聽聽 鍏ㄥ眬寮曠敤錛岄渶瑕佹墜鍔ㄩ噴鏀撅紝闃叉鍨冨溇鍥炴敹鍣ㄥ洖鏀躲傞渶瑕佷嬌鐢?/span>NewGlobalRef鍑芥暟鍒涘緩錛岄噴鏀懼畠闇瑕佷嬌鐢?/span>DeleteGlobalRef鍑芥暟銆?/span>

聽聽聽聽聽聽聽聽聽聽 寮卞叏灞寮曠敤錛岄渶瑕佺紪紼嬩漢鍛樻墜鍔ㄩ噴鏀撅紝浣嗘槸瀹冧笉闃叉鍨冨溇鍥炴敹鍣ㄧ殑鍥炴敹銆?/span>

聽聽聽聽聽聽聽聽聽聽 浣跨敤NewWeakGlobalRef鍒涘緩錛屼嬌鐢?/span>DeleteWeakGlobalref閲婃斁銆?/span>IsSamObject(jobject obj1, jobject obj2)鍒ゆ柇寮卞叏灞寮曠敤鎸囧悜鐨勫璞℃槸鍚﹀凡琚洖鏀躲?/span>



vagasnail 2009-11-04 18:44 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 中文字幕的电影免费网站| 美女啪啪网站又黄又免费| 国产一级a毛一级a看免费视频| 国产免费av片在线无码免费看| 亚洲jizzjizz少妇| 国产网站在线免费观看| 亚洲AV日韩AV一区二区三曲| 国内自产拍自a免费毛片| 亚洲色大成网站www| 免费无遮挡无码视频网站| 青青青亚洲精品国产| 深夜国产福利99亚洲视频| 免费人成动漫在线播放r18| 亚洲成a人无码av波多野按摩| 免费无遮挡无码视频在线观看| 亚洲一级特黄大片在线观看| 巨胸喷奶水www永久免费| 亚洲av之男人的天堂网站| 免费国产黄网站在线观看可以下载| 亚洲av午夜福利精品一区| 最近的中文字幕大全免费8| 亚洲一区二区免费视频| 日本免费电影一区| h片在线播放免费高清| 亚洲人成网站影音先锋播放| 在线观看免费人成视频| 日韩国产欧美亚洲v片| 久久久久亚洲AV成人网人人网站| 国产一级淫片a免费播放口| 亚洲中文字幕久久精品无码2021| 国产美女无遮挡免费网站| 久久精品成人免费观看97| 亚洲综合久久1区2区3区| 永久在线毛片免费观看| 国产精品美女久久久免费| 亚洲福利电影一区二区?| 国产美女无遮挡免费视频网站| 亚洲免费视频一区二区三区| 中文字幕亚洲精品资源网| 在线看片无码永久免费aⅴ| a级在线免费观看|