°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 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¡¡ÒýÓ㿶øÇÒÀ¬»øÊÕ¼¯Æ÷ÔÚ¹ÌÓз½·¨µ÷ÓÃÆÚ¼äÓÖÔÚ×öʲôÄØ£¿¡¡¡¡
À¬»øÊÕ¼¯Æ÷»áÔÚ¹ÌÓз½·¨Ö´ÐÐÆÚ¼ä³ÖÐøÔËÐУ¬µ«ÔÚÒ»´Î¹ÌÓз½·¨µ÷ÓÃÆڼ䣬ÎÒÃǵĶÔÏó¿É±£Ö¤²»»á±»µ±×÷¡¡
¡¡¡°À¬»ø¡±ÊÕ¼¯È¥¡£ÎªÈ·±£ÕâÒ»µã£¬ÊÂÏÈ´´½¨ÁË¡°¾Ö²¿ÒýÓá±£¬²¢ÔÚ¹ÌÓз½·¨µ÷ÓÃÖ®ºóÁ¢¼´Çå³ý¡£ÓÉÓÚËüÃǵġ¡
¡¡¡°É