ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡ÔĶÁ¹ý³Ì·¢ÏÖÈκδíÎóÇë¸æËßÎÒÃÇ£¬Ð»Ð»£¡£¡ ±¨¸æ´íÎó
Ò»ÊÀÊé³Ç ·µ»Ø±¾ÊéĿ¼ ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ½øÈëÊé°É ¼ÓÈëÊéÇ©

Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ208ÕÂ

°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡




#endif¡¡¡¡

/*¡¡¡¡

¡¡*¡¡Class£º¡¡¡¡¡¡¡¡¡¡ShowMsgBox¡¡¡¡

¡¡*¡¡Method£º¡¡¡¡¡¡¡¡ShowMessage¡¡¡¡

¡¡*¡¡Signature£º¡¡£¨Ljava/lang/String£»£©V¡¡¡¡

¡¡*/¡¡¡¡

JNIEXPORT¡¡void¡¡JNICALL¡¡¡¡¡¡

Java_ShowMsgBox_ShowMessage¡¡¡¡

¡¡¡¡£¨JNIEnv¡¡*£»¡¡jobject£»¡¡jstring£©£»¡¡¡¡

¡¡¡¡

#ifdef¡¡__cplusplus¡¡¡¡

£ý¡¡¡¡

#endif¡¡¡¡

#endif¡¡¡¡

¡¡¡¡

´Ó¡°#ifdef_cplusplus¡±Õâ¸öÔ¤´¦ÀíÒýµ¼ÃüÁî¿ÉÒÔ¿´³ö£¬¸ÃÎļþ¼È¿ÉÓÉC¡¡±àÒëÆ÷±àÒ룬Òà¿ÉÓÉC£«£«±àÒëÆ÷±à¡¡

Òë¡£µÚÒ»¸ö#include¡¡ÃüÁî°üÀ¨¡¡jni¡£h¡ª¡ªÒ»¸öÍ·Îļþ£¬×÷ÓÃÖ®Ò»ÊǶ¨ÒåÔÚÎļþÆäÓಿ·ÖÓõ½µÄÀàÐÍ£»¡¡

JNIEXPORT¡¡ºÍJNICALL¡¡ÊÇһЩºê£¬ËüÃǽøÐÐÁËÊʵ±µÄÀ©³ä£¬ÒÔ±ãÓëÄÇЩ²»Í¬Æ½Ì¨×¨ÓõÄÒýµ¼ÃüÁîÅäºÏ£»¡¡

JNIEnv£¬jobject¡¡ÒÔ¼°jstringÔòÊÇJNI¡¡Êý¾ÝÀàÐͶ¨Òå¡£¡¡¡¡

¡¡¡¡

2¡£¡¡Ãû³Æ¹ÜÀíºÍº¯ÊýÇ©Ãû¡¡¡¡

JNI¡¡Í³Ò»Á˹ÌÓз½·¨µÄÃüÃû¹æÔò£»ÕâÒ»µãÊǷdz£ÖØÒªµÄ£¬ÒòΪËüÊôÓÚÐéÄâ»ú½«¡¡Java¡¡µ÷ÓÃÓë¹ÌÓз½·¨Á´½ÓÆðÀ´¡¡

µÄ»úÖƵÄÒ»²¿·Ö¡£´Ó¸ù±¾ÉÏ˵£¬ËùÓйÌÓз½·¨¶¼ÒªÒÔÒ»¸ö¡°Java¡¡¡±ÆðÍ·£¬ºóÃæ¸úËæ¡¡Java¡¡·½·¨µÄÃû×Ö£»Ï»®Ïß¡¡

×Ö·ûÔò×÷Ϊ·Ö¸ô·ûʹÓá£ÈôJava¡¡¹ÌÓз½·¨¡°¹ýÔØ¡±£¨¼´ÃüÃûÖظ´£©£¬ÄÇôҲ°Ñº¯ÊýÇ©Ãû×·¼Óµ½Ãû×ÖºóÃæ¡£ÔÚ¡¡

Ô­ÐÍÇ°ÃæµÄ×¢ÊÍÀ´ó¼Ò¿É¿´µ½¹ÌÓеÄÇ©Ãû¡£ÓûÁ˽âÃüÃû¹æÔòºÍ¹ÌÓз½·¨Ç©Ãû¸üÏêϸµÄÇé¿ö£¬Çë²Î¿¼ÏàÓ¦µÄ¡¡

JNI¡¡Îĵµ¡£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡651¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡653¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡

3¡£¡¡ÊµÏÖ×Ô¼ºµÄ¡¡DLL¡¡¡¡

´Ëʱ£¬ÎÒÃÇÒª×öµÄÈ«²¿ÊÂÇé¾ÍÊÇдһ¸öC¡¡»ò¡¡C£«£«Ô´Îļþ£¬ÔÚÆäÖаüº¬ÓÉ¡¡javah¡¡Éú³ÉµÄÍ·Îļþ£»²¢ÊµÏÖ¹ÌÓз½¡¡

·¨£»È»ºó±àÒëËü£¬Éú³ÉÒ»¸ö¶¯Ì¬Á´½Ó¿â¡£ÕâÒ»²¿·ÖµÄ¹¤×÷ÊÇÓëƽ̨Óйصģ¬ËùÒÔÎÒ¼Ù¶¨¶ÁÕßÒѾ­ÖªµÀÈçºÎ´´¡¡

½¨Ò»¸öDLL¡£Í¨¹ýµ÷ÓÃÒ»¸öWin32¡¡API£¬ÏÂÃæµÄ´úÂëʵÏÖÁ˹ÌÓз½·¨¡£Ëæºó£¬Ëü»á±àÒëºÍÁ´½Óµ½Ò»¸öÃûΪ¡¡

MsgImpl¡£dll¡¡µÄÎļþÀ¡¡¡¡

¡¡¡¡

#include¡¡¡¡¡¡

#include¡¡¡¨ShowMsgBox¡£h¡¨¡¡¡¡

¡¡¡¡

BOOL¡¡APIENTRY¡¡DllMain£¨HANDLE¡¡hModule£»¡¡¡¡¡¡

¡¡¡¡DWORD¡¡dwReason£»¡¡void**¡¡lpReserved£©¡¡£û¡¡¡¡

¡¡¡¡return¡¡TRUE£»¡¡¡¡

£ý¡¡¡¡

JNIEXPORT¡¡void¡¡JNICALL¡¡¡¡¡¡

Java_ShowMsgBox_ShowMessage£¨JNIEnv¡¡*¡¡jEnv£»¡¡¡¡¡¡

¡¡¡¡jobject¡¡this£»¡¡jstring¡¡jMsg£©¡¡£û¡¡¡¡

¡¡¡¡const¡¡char¡¡*¡¡msg£»¡¡¡¡

¡¡¡¡msg¡¡=¡¡£¨*jEnv£©¡­¡·GetStringUTFChars£¨jEnv£»¡¡jMsg£»0£©£»¡¡¡¡

¡¡¡¡MessageBox£¨HWND_DESKTOP£»¡¡msg£»¡¡¡¡¡¡

¡¡¡¡¡¡¡¡¡¨Thinking¡¡in¡¡Java£º¡¡JNI¡¨£»¡¡¡¡

¡¡¡¡¡¡¡¡MB_OK¡¡£ü¡¡MB_ICONEXCLAMATION£©£»¡¡¡¡

¡¡¡¡£¨*jEnv£©¡­¡·ReleaseStringUTFChars£¨jEnv£»¡¡jMsg£»msg£©£»¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

Èô¶ÔWin32¡¡Ã»ÓÐÐËȤ£¬Ö»ÐèÌø¹ýMessageBox£¨£©µ÷Óã»×îÓÐȤµÄ²¿·ÖÊÇËüÖÜΧµÄ´úÂë¡£´«µÝµ½¹ÌÓз½·¨ÄÚ²¿µÄ¡¡

×Ô±äÁ¿ÊÇ·µ»ØJava¡¡µÄ´óÃÅ¡£µÚÒ»¸ö×Ô±äÁ¿ÊÇÀàÐÍ¡¡JNIEnv¡¡µÄ£¬ÆäÖаüº¬Á˻ص÷JVM¡¡ÐèÒªµÄËùÓйҹ³£¨ÏÂÒ»½Ú¡¡

ÔÙÏêϸ½²Êö£©¡£ÓÉÓÚ·½·¨µÄÀàÐͲ»Í¬£¬µÚ¶þ¸ö×Ô±äÁ¿Ò²ÓÐ×Ô¼º²»Í¬µÄº¬Òå¡£¶ÔÓÚÏóÉÏÀýÄÇÑùµÄ·Ç¡¡static·½·¨¡¡

¡¡£¨Ò²½Ð×÷ʵÀý·½·¨£©£¬µÚ¶þ¸ö×Ô±äÁ¿µÈ¼ÛÓÚC£«£«µÄ¡°this¡¡¡±Ö¸Õ룬²¢ÀàËÆÓÚJava¡¡µÄ¡°this¡¡¡±£º¶¼ÒýÓÃÁ˵÷Óá¡

¹ÌÓз½·¨µÄÄǸö¶ÔÏ󡣶ÔÓÚstatic·½·¨£¬ËüÊǶÔÌض¨¡¡Class¡¡¶ÔÏóµÄÒ»¸öÒýÓ㬷½·¨¾ÍÊÇÔÚÄǸö¡¡Class¡¡¶ÔÏóÀï¡¡

ʵÏֵġ£¡¡¡¡

Ê£ÓàµÄ×Ô±äÁ¿´ú±í´«µÝµ½¹ÌÓз½·¨µ÷ÓÃÀïµÄJava¡¡¶ÔÏó¡£Ö÷ÀàÐÍÒ²ÊÇÒÔÕâÖÖÐÎʽ´«µÝµÄ£¬µ«ËüÃǽøÐеġ°°´¡¡

Öµ¡±´«µÝ¡£¡¡¡¡

ÔÚºóÃæµÄС½ÚÀÎÒÃÇ×¼±¸½²ÊöÈçºÎ´ÓÒ»¸ö¹ÌÓз½·¨µÄÄÚ²¿·ÃÎʺͿØÖÆJVM£¬Í¬Ê±¶ÔÉÏÊö´úÂë½øÐиüÏ꾡µÄ¡¡

½âÊÍ¡£¡¡¡¡



A¡£1¡£2¡¡¡¡·ÃÎÊ¡¡JNI¡¡º¯Êý£ºJNIEnv¡¡×Ô±äÁ¿¡¡¡¡



ÀûÓÃJNI¡¡º¯Êý£¬³ÌÐòÔ±¿É´ÓÒ»¸ö¹ÌÓз½·¨µÄÄÚ²¿Óë¡¡JVM¡¡´ò½»µÀ¡£ÕýÈç´ó¼ÒÔÚÇ°ÃæµÄÀý×ÓÖп´µ½µÄÄÇÑù£¬Ã¿¸ö¡¡

JNI¡¡¹ÌÓз½·¨¶¼»á½ÓÊÕÒ»¸öÌØÊâµÄ×Ô±äÁ¿×÷Ϊ×Ô¼ºµÄµÚÒ»¸ö²ÎÊý£ºJNIEnv¡¡×Ô±äÁ¿¡ª¡ªËüÊÇÖ¸ÏòÀàÐÍΪ¡¡

JNIEnv_µÄÒ»¸öÌØÊâ¡¡JNI¡¡Êý¾Ý½á¹¹µÄÖ¸Õë¡£JNI¡¡Êý¾Ý½á¹¹µÄÒ»¸öÔªËØÊÇÖ¸ÏòÓÉ¡¡JVM¡¡Éú³ÉµÄÒ»¸öÊý×éµÄÖ¸Õ룻¸Ã¡¡

Êý×éµÄÿ¸öÔªËض¼ÊÇÖ¸ÏòÒ»¸ö¡¡JNI¡¡º¯ÊýµÄÖ¸Õë¡£¿É´Ó¹ÌÓз½·¨µÄÄÚ²¿·¢³ö¶ÔJNI¡¡º¯ÊýµÄµ÷Óã¬×ö·¨Êdz·Ïû¶Ô¡¡

ÕâЩָÕëµÄÒýÓ㨾ßÌåµÄ²Ù×÷ʵ¼ÊºÜ¼òµ¥£©¡£Ã¿ÖÖ¡¡JVM¡¡¶¼ÒÔ×Ô¼ºµÄ·½Ê½ÊµÏÖÁË¡¡JNI¡¡º¯Êý£¬µ«ËüÃǵĵØÖ·¿Ï¶¨¡¡

λÓÚÔ¤Ïȶ¨ÒåºÃµÄÆ«ÒÆ´¦¡£¡¡¡¡

ÀûÓÃJNIEnv¡¡×Ô±äÁ¿£¬³ÌÐòÔ±¿É·ÃÎÊһϵÁк¯Êý¡£ÕâЩº¯Êý¿É»®·ÖΪÏÂÊöÀà±ð£º¡¡¡¡

¡ö»ñÈ¡°æ±¾ÐÅÏ¢¡¡¡¡

¡ö½øÐÐÀàºÍ¶ÔÏó²Ù×÷¡¡¡¡

¡ö¿ØÖƶÔJava¡¡¶ÔÏóµÄÈ«¾ÖºÍ¾Ö²¿ÒýÓá¡¡¡

¡ö·ÃÎÊʵÀý×ֶκ;²Ì¬×ֶΡ¡¡¡

¡öµ÷ÓÃʵÀý·½·¨ºÍ¾²Ì¬·½·¨¡¡¡¡

¡öÖ´ÐÐ×Ö´®ºÍÊý×é²Ù×÷¡¡¡¡

¡ö²úÉúºÍ¿ØÖÆJava¡¡Òì³£¡¡¡¡

JNI¡¡º¯ÊýµÄÊýÁ¿Ï൱¶à£¬ÕâÀï²»ÔÙÏêÊö¡£Ïà·´£¬ÎÒ»áÏò´ó¼Ò½ÒʾʹÓÃÕâЩº¯Êýʱ±³ºóµÄһЩ»ù±¾Ô­Àí¡£ÓûÁË¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡652¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡654¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

½â¸üÏêϸµÄÇé¿ö£¬Çë²ÎÔÄ×Ô¼ºËùÓñàÒëÆ÷µÄJNI¡¡Îĵµ¡£¡¡¡¡

Èô¹Û²ìһϡ¡jni¡£hÍ·Îļþ£¬¾Í»á·¢ÏÖÔÚ#ifdef¡¡_cplusplus¡¡Ô¤´¦ÀíÆ÷Ìõ¼þµÄÄÚ²¿£¬µ±ÓÉC£«£«±àÒëÆ÷±àÒëʱ£¬¡¡

JNIEnv_½á¹¹±»¶¨Òå³ÉÒ»¸öÀà¡£Õâ¸öÀà°üº¬ÁË´óÁ¿ÄÚǶº¯Êý¡£Í¨¹ýÒ»ÖÖ¼òµ¥¶øÇÒÊìϤµÄÓï·¨£¬ÕâЩº¯ÊýÈÃÎÒÃÇ¡¡

¿ÉÒÔ´ÓÈÝ·ÃÎÊJNI¡¡º¯Êý¡£ÀýÈ磬ǰÀý°üº¬ÁËÏÂÃæÕâÐдúÂ룺¡¡¡¡

£¨*jEnv£©¡­¡·ReleaseStringUTFChars£¨jEnv£»¡¡jMsg£»msg£©£»¡¡¡¡

ËüÔÚC£«£«Àï¿É¸Äд³ÉÏÂÃæÕâ¸öÑù×Ó£º¡¡¡¡

jEnv¡­¡·ReleaseStringUTFChars£¨jMsg£»msg£©£»¡¡¡¡

´ó¼Ò¿É×¢Òâµ½×Ô¼º²»ÔÙÐèҪͬʱ³·Ïû¶ÔjEnv¡¡µÄÁ½¸öÒýÓã¬ÏàͬµÄÖ¸Õë²»ÔÙ×÷ΪµÚÒ»¸ö²ÎÊý´«µÝ¸øJNI¡¡º¯Êýµ÷¡¡

Óá£ÔÚÕâЩÀý×Óʣϵĵط½£¬ÎÒ»áʹÓÃC£«£«·ç¸ñµÄ´úÂë¡£¡¡¡¡

¡¡¡¡

1¡£¡¡·ÃÎÊJava¡¡×Ö´®¡¡¡¡

×÷Ϊ·ÃÎÊJNI¡¡º¯ÊýµÄÒ»¸öÀý×Ó£¬Çë˼¿¼ÉÏÊöµÄ´úÂë¡£ÔÚÕâÀÎÒÃÇÀûÓá¡JNIEnv¡¡µÄ×Ô±äÁ¿jEnv¡¡À´·ÃÎÊÒ»¸ö¡¡

Java¡¡×Ö´®¡£Java¡¡×Ö´®²ÉÈ¡µÄÊÇUnicode¡¡¸ñʽ£¬ËùÒÔ¼ÙÈôÊÕµ½ÕâÑùÒ»¸ö×Ö´®£¬²¢Ïë°ÑËü´«¸øÒ»¸ö·Ç¡¡Unicode¡¡º¯¡¡

Êý£¨Èçprintf£¨£©¡¡£©£¬Ê×ÏȱØÐëÓÃJNI¡¡º¯ÊýGetStringUTFChars£¨£©½«Æäת»»³É¡¡ASCII¡¡×Ö·û¡£¸Ãº¯ÊýÄܽÓÊÕÒ»¸ö¡¡

Java¡¡×Ö´®£¬È»ºó°ÑËüת»»³É¡¡UTF¡­8¡¡×Ö·û£¨Óá¡8¡¡Î»¿í¶ÈÈÝÄÉ¡¡ASCII¡¡Öµ£¬»òÓá¡16¡¡Î»¿í¶ÈÈÝÄÉ¡¡Unicode£»Èôԭʼ×Ö¡¡

´®µÄÄÚÈÝÍêÈ«ÓÉASCII¡¡¹¹³É£¬ÄÇô½á¹û×Ö´®Ò²ÊÇASCII£©¡£¡¡¡¡

GetStringUTFChars¡¡ÊÇJNIEnv¡¡¼ä½ÓÖ¸ÏòµÄÄǸö½á¹¹ÀïµÄÒ»¸ö×ֶΣ¬¶øÕâ¸ö×Ö¶ÎÓÖÊÇÖ¸ÏòÒ»¸öº¯ÊýµÄÖ¸Õ롣Ϊ¡¡

·ÃÎÊJNI¡¡º¯Êý£¬ÎÒÃÇÓô«Í³µÄC¡¡Óï·¨À´µ÷ÓÃÒ»¸öº¯Êý¡¡£¨Í¨¹ýÖ¸Õ룩¡£ÀûÓÃÉÏÊöÐÎʽ¿ÉʵÏÖ¶ÔËùÓÐJNI¡¡º¯ÊýµÄ¡¡

·ÃÎÊ¡£¡¡¡¡



A¡£1¡£3¡¡¡¡´«µÝºÍʹÓá¡Java¡¡¶ÔÏó¡¡¡¡



ÔÚÇ°ÀýÖУ¬ÎÒÃǽ«Ò»¸ö×Ö´®´«µÝ¸ø¹ÌÓз½·¨¡£ÊÂʵÉÏ£¬Òà¿É½«×Ô¼º´´½¨µÄ¡¡Java¡¡¶ÔÏ󴫵ݸø¹ÌÓз½·¨¡£¡¡¡¡

ÔÚÎÒÃǵĹÌÓз½·¨ÄÚ²¿£¬¿É·ÃÎÊÒÑÊÕµ½µÄÄÇЩ¶ÔÏóµÄ×ֶμ°·½·¨¡£¡¡¡¡

Ϊ´«µÝ¶ÔÏó£¬ÉùÃ÷¹ÌÓз½·¨Ê±Òª²ÉÓÃԭʼµÄJava¡¡Óï·¨¡£ÈçÏÂÀýËùʾ£¬MyJavaClass¡¡ÓÐÒ»¸ö¡¡public¡¡£¨¹«¹²£©×Ö¡¡

¶Î£¬ÒÔ¼°Ò»¸öpublic¡¡·½·¨¡£UseObjects¡¡ÀàÉùÃ÷ÁËÒ»¸ö¹ÌÓз½·¨£¬ÓÃÓÚ½ÓÊÕ¡¡MyJavaClass¡¡ÀàµÄÒ»¸ö¶ÔÏó¡£Îª¡¡

µ÷²é¹ÌÓз½·¨ÊÇ·ñÄÜ¿ØÖÆ×Ô¼ºµÄ×Ô±äÁ¿£¬ÎÒÃÇÉèÖÃÁË×Ô±äÁ¿µÄ¡¡public¡¡×ֶΣ¬µ÷ÓùÌÓз½·¨£¬È»ºó´òÓ¡³ö¡¡

public¡¡×ֶεÄÖµ¡£¡¡¡¡

¡¡¡¡

class¡¡MyJavaClass¡¡£û¡¡¡¡

¡¡¡¡public¡¡void¡¡divByTwo£¨£©¡¡£û¡¡aValue¡¡/=¡¡2£»¡¡£ý¡¡¡¡

¡¡¡¡public¡¡int¡¡aValue£»¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

public¡¡class¡¡UseObjects¡¡£û¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String¡¡£§£§¡¡args£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡UseObjects¡¡app¡¡=¡¡new¡¡UseObjects£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡MyJavaClass¡¡anObj¡¡=¡¡new¡¡MyJavaClass£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡anObj¡£aValue¡¡=¡¡2£»¡¡¡¡

¡¡¡¡¡¡¡¡app¡£changeObject£¨anObj£©£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Java£º¡¡¡¨¡¡£«¡¡anObj¡£aValue£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡private¡¡native¡¡void¡¡¡¡¡¡

¡¡¡¡changeObject£¨MyJavaClass¡¡obj£©£»¡¡¡¡

¡¡¡¡static¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡System¡£loadLibrary£¨¡¨UseObjImpl¡¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

±àÒëºÃ´úÂ룬²¢½«¡£class¡¡Îļþ´«µÝ¸ø¡¡javah¡¡ºó£¬¾Í¿ÉÒÔʵÏÖ¹ÌÓз½·¨¡£ÔÚÏÂÃæÕâ¸öÀý×ÓÖУ¬Ò»µ©È¡µÃ×ֶκ͡¡

·½·¨¡¡ID£¬¾Í»áͨ¹ý¡¡JNI¡¡º¯Êý·ÃÎÊËüÃÇ¡£¡¡¡¡

¡¡¡¡

JNIEXPORT¡¡void¡¡JNICALL¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡653¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡655¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

Java_UseObjects_changeObject£¨¡¡¡¡

¡¡¡¡JNIEnv¡¡*¡¡env£»¡¡jobject¡¡jThis£»¡¡jobject¡¡obj£©¡¡£û¡¡¡¡

¡¡¡¡jclass¡¡cls£»¡¡¡¡

¡¡¡¡jfieldID¡¡fid£»¡¡¡¡

¡¡¡¡jmethodID¡¡mid£»¡¡¡¡

¡¡¡¡int¡¡value£»¡¡¡¡

¡¡¡¡cls¡¡=¡¡env¡­¡·GetObjectClass£¨obj£©£»¡¡¡¡

¡¡¡¡fid¡¡=¡¡env¡­¡·GetFieldID£¨cls£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨aValue¡¨£»¡¡¡¨I¡¨£©£»¡¡¡¡

¡¡¡¡mid¡¡=¡¡env¡­¡·GetMethodID£¨cls£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨divByTwo¡¨£»¡¡¡¨£¨£©V¡¨£©£»¡¡¡¡

¡¡¡¡value¡¡=¡¡env¡­¡·GetIntField£¨obj£»¡¡fid£©£»¡¡¡¡

¡¡¡¡printf£¨¡¨Native£º¡¡£¥dn¡¨£»¡¡value£©£»¡¡¡¡

¡¡¡¡env¡­¡·SetIntField£¨obj£»¡¡fid£»¡¡6£©£»¡¡¡¡

¡¡¡¡env¡­¡·CallVoidMethod£¨obj£»¡¡mid£©£»¡¡¡¡

¡¡¡¡value¡¡=¡¡env¡­¡·GetIntField£¨obj£»¡¡fid£©£»¡¡¡¡

¡¡¡¡printf£¨¡¨Native£º¡¡£¥dn¡¨£»¡¡value£©£»¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

³ýµÚÒ»¸ö×Ô±äÁ¿Í⣬C£«£«º¯Êý»á½ÓÊÕÒ»¸ö¡¡jobject£¬Ëü´ú±íJava¡¡¶ÔÏóÒýÓá°¹ÌÓС±µÄÄÇÒ»Ã桪¡ªÄǸöÒýÓÃÊÇ¡¡

ÎÒÃÇ´Ó¡¡Java¡¡´úÂëÀï´«µÝµÄ¡£ÎÒÃǼòµ¥µØ¶ÁÈ¡¡¡aValue£¬°ÑËü´òÓ¡³öÀ´£¬¸Ä±äÕâ¸öÖµ£¬µ÷ÓöÔÏóµÄdivByTwo£¨£©¡¡

·½·¨£¬ÔÙ½«ÖµÖØдòÓ¡Ò»±é¡£¡¡¡¡

Ϊ·ÃÎÊÒ»¸ö×ֶλò·½·¨£¬Ê×ÏȱØÐë»ñÈ¡ËüµÄ±êʶ·û¡£ÀûÓÃÊʵ±µÄJNI¡¡º¯Êý£¬¿É·½±ãµØÈ¡µÃÀà¶ÔÏó¡¢ÔªËØÃûÒÔ¡¡

¼°Ç©ÃûÐÅÏ¢¡£ÕâЩº¯Êý»á·µ»ØÒ»¸ö±êʶ·û£¬ÀûÓÃËü¿É·ÃÎʶÔÓ¦µÄÔªËØ¡£¾¡¹ÜÕâÒ»·½Ê½ÏÔµÃÓÐЩÇúÕÛ£¬µ«ÎÒÃÇ¡¡

µÄ¹ÌÓз½·¨È·Êµ¶ÔJava¡¡¶ÔÏóµÄÄÚ²¿²¼¾ÖÒ»ÎÞËùÖª¡£Òò´Ë£¬Ëü±ØÐëͨ¹ýÓÉ¡¡JVM¡¡·µ»ØµÄË÷Òý·ÃÎÊ×ֶκͷ½·¨¡£Õâ¡¡

ÑùÒ»À´£¬²»Í¬µÄJVM¡¡¾Í¿ÉʵÏÖ²»Í¬µÄÄÚ²¿¶ÔÏó²¼¾Ö£¬Í¬Ê±²»»á¶Ô¹ÌÓз½·¨Ôì³ÉÓ°Ïì¡£¡¡¡¡

ÈôÔËÐС¡Java¡¡³ÌÐò£¬¾Í»á·¢ÏÖ´Ó¡¡Java¡¡ÄÇÒ»²à´«À´µÄ¶ÔÏóÊÇÓÉÎÒÃǵĹÌÓз½·¨´¦ÀíµÄ¡£µ«´«µÝµÄµ½µ×ÊÇʲô¡¡

ÄØ£¿ÊÇÖ¸Õ룬»¹ÊÇJava¡¡ÒýÓ㿶øÇÒÀ¬»øÊÕ¼¯Æ÷ÔÚ¹ÌÓз½·¨µ÷ÓÃÆÚ¼äÓÖÔÚ×öʲôÄØ£¿¡¡¡¡

À¬»øÊÕ¼¯Æ÷»áÔÚ¹ÌÓз½·¨Ö´ÐÐÆÚ¼ä³ÖÐøÔËÐУ¬µ«ÔÚÒ»´Î¹ÌÓз½·¨µ÷ÓÃÆڼ䣬ÎÒÃǵĶÔÏó¿É±£Ö¤²»»á±»µ±×÷¡¡

¡¡¡°À¬»ø¡±ÊÕ¼¯È¥¡£ÎªÈ·±£ÕâÒ»µã£¬ÊÂÏÈ´´½¨ÁË¡°¾Ö²¿ÒýÓá±£¬²¢ÔÚ¹ÌÓз½·¨µ÷ÓÃÖ®ºóÁ¢¼´Çå³ý¡£ÓÉÓÚËüÃǵġ¡

¡¡¡°É
·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨0£© ²È£¨0£©
δÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæдԭ´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøŶ£¡