锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲视频免费在线观看,久久精品国产亚洲av日韩,久久精品国产亚洲http://m.tkk7.com/vagasnail/category/42602.html璇誨巻鍙層佺湅灝忚銆佸啓紼嬪簭閮芥槸鎴戞墍鐖便?/description>zh-cnFri, 06 Nov 2009 19:39:23 GMTFri, 06 Nov 2009 19:39:23 GMT60JNI瀛︿範璁板綍http://m.tkk7.com/vagasnail/articles/301124.htmlvagasnailvagasnailWed, 04 Nov 2009 10:44:00 GMThttp://m.tkk7.com/vagasnail/articles/301124.htmlhttp://m.tkk7.com/vagasnail/comments/301124.htmlhttp://m.tkk7.com/vagasnail/articles/301124.html#Feedback0http://m.tkk7.com/vagasnail/comments/commentRss/301124.htmlhttp://m.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 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲国产av美女网站| 亚洲中文字幕无码爆乳| 222www在线观看免费| 亚洲一区二区三区成人网站 | 夜夜嘿视频免费看| a级毛片免费高清视频| 91亚洲自偷在线观看国产馆| 亚洲av高清在线观看一区二区| 大地资源网高清在线观看免费| 国产亚洲玖玖玖在线观看| 区久久AAA片69亚洲| 9久9久女女免费精品视频在线观看| 特级毛片aaaa免费观看| 亚洲国产精品综合久久久| 中文字幕亚洲第一| 无人在线观看完整免费版视频| 三年在线观看免费观看完整版中文| 亚洲人成7777| 亚洲免费精彩视频在线观看| 又粗又大又猛又爽免费视频| 18禁美女黄网站色大片免费观看| 香蕉视频免费在线播放| 国产成人精品日本亚洲专| 国产亚洲色婷婷久久99精品 | 亚洲中文无码线在线观看| 亚洲无码日韩精品第一页| 色se01短视频永久免费| 免费a级毛片无码a∨免费软件| 免费福利在线观看| 亚洲三级高清免费| 久久青青草原亚洲av无码app| 国产亚洲精aa成人网站| 成人免费淫片在线费观看| 精品熟女少妇av免费久久| 丁香花在线观看免费观看图片| 亚洲6080yy久久无码产自国产| 亚洲成人高清在线观看| 久久91亚洲精品中文字幕| 国产精品V亚洲精品V日韩精品| 国产免费人视频在线观看免费 | 日韩精品成人无码专区免费|