ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
¸»Ê¿¿µÐ¡ËµÍø ·µ»Ø±¾ÊéĿ¼ ¼ÓÈëÊéÇ© ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ¡ºÊղص½ÎÒµÄä¯ÀÀÆ÷¡»

Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ111²¿·Ö

¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡



¹ý¶ÔÊý×Ö½øÐе÷Õû£¬¼´¿É½øÐÐÈ«ÃæµÄÐ޸ġ£ÖÁÓÚÓëÕâÖÖȺ¾ÛÐÐΪÓйصĸü¶àµÄÇé¿ö£¬´ó¼Ò¿ÉÒÔ·ÃÎÊCraig¡¡¡¡

Reynold¡¡µÄÖ÷Ò³¡ª¡ªÔÚÄǸöµØ·½£¬ÉõÖÁ»¹ÌṩÁËBoids¡¡Ò»¸ö¹«¿ªµÄ¡¡3D¡¡Õ¹Ê¾°æ±¾£º¡¡¡¡

http£º//hmt¡£/cwr/boids¡£html¡¡¡¡

ΪÁ˽«Õâ¸ö³ÌÐò×÷Ϊһ¸ö³ÌÐòƬÔËÐУ¬ÇëÔÚHTML¡¡ÎļþÖÐÉèÖÃÏÂÊö³ÌÐòƬ±êÖ¾£º¡¡¡¡

¡¡¡¡

¡¡¡¡

¡¡¡¡

¡¡¡¡

¡¡¡¡



17¡£4¡¡×ܽᡡ¡¡



ͨ¹ý±¾ÕµÄѧϰ£¬´ó¼ÒÖªµÀÔËÓÃJava¡¡¿É×öµ½Ò»Ð©½Ï¸´ÔÓµÄÊÂÇ顣ͨ¹ýÕâЩÀý×ÓÒà¿É¿´³ö£¬¾¡¹Ü¡¡Java¡¡±Ø¶¨ÓС¡

×Ô¼ºµÄ¾ÖÏÞ£¬µ«ÊÜÄÇЩ¾ÖÏÞÓ°ÏìµÄÖ÷ÒªÊÇÐÔÄÜ£¨±ÈÈçдºÃÎÄ×Ö´¦Àí³ÌÐòºó£¬»á·¢ÏÖC£«£«µÄ°æ±¾Òª¿ìµÃ¶à¡ª¡ª¡¡

Õⲿ·ÖÊÇÓÉÓÚ¡¡IO¡¡¿â×öµÃ²»ÍêÉÆÔì³ÉµÄ£»¶øÔÚÄã¶Áµ½±¾ÊéµÄʱºò£¬Çé¿öÒ²ÐíÒÑ·¢ÉúÁ˱仯¡£µ«Java¡¡µÄ¾ÖÏÞÒ²¡¡

½ö´Ë¶øÒÑ£¬ËüÔÚÓïÑÔ±í´ï·½ÃæµÄÄÜÁ¦ÊÇÎÞÒÔÂױȵġ£ÀûÓá¡Java£¬¼¸ºõ¿ÉÒÔ±í´ï³öÎÒÃÇÏëµÃµ½µÄÈκÎÊÂÇé¡£¶ø¡¡

Óë´Ëͬʱ£¬Java¡¡ÔÚ±í´ïµÄ·½±ãÐÔºÍÒ׶ÁÐÔÉÏ£¬Ò²×ö×ãÁ˹¦·ò¡£ËùÒÔÔÚʹÓá¡Java¡¡Ê±£¬Ò»°ã²»»áÏÝÈëÆäËûÓïÑÔ¡¡

³£¼ûµÄÄÇÖÖ¸´ÔÓ¾³µØ¡£Ê¹ÓÃÄÇЩÓïÑÔʱ£¬»á¸Ð¾õËüÃÇÏóÒ»¸ö°®ßë߶µÄÀÏÌ«ÆÅ£¬ÄÄÓÐJava¡¡ÄÇÑùÇå´¿¡¢¼òÁ·£¡¶ø¡¡

ÇÒͨ¹ý¡¡Java¡¡1¡£2¡¡µÄJFC/Swing¡¡¿â£¬AWT¡¡µÄ±í´ïÄÜÁ¦ºÍÒ×ÓÃÐÔÉõÖÁÓֵõ½Á˽øÒ»²½µÄÔöÇ¿¡£¡¡¡¡



17¡£5¡¡Á·Ï°¡¡¡¡



£¨1£©¡¡¡¡£¨ÉÔ΢ÓÐЩÄѶȣ©¸ÄдFieldOBeasts¡£java£¬Ê¹ËüµÄ״̬Äܹ»±£³Ö¹Ì¶¨¡£¼ÓÉÏһЩ°´Å¥£¬ÔÊÐíÓû§±£´æ¡¡

ºÍ»Ö¸´²»Í¬µÄ״̬Îļþ£¬²¢´ÓËüÃǶϵôµÄµØ·½¿ªÊ¼¼ÌÐøÔËÐС£ÇëÏȲο¼µÚ¡¡10ÕµÄCADState¡£java¡¡£¬ÔÙ¾ö¶¨¾ß¡¡

ÌåÔõÑù×ö¡£¡¡¡¡

£¨2£©¡¡¡¡£¨´ó×÷Òµ£©ÒÔFieldOBeasts¡£java¡¡×÷ΪÆðµã£¬¹¹ÔìÒ»¸ö×Ô¶¯»¯½»Í¨·ÂÕæϵͳ¡£¡¡¡¡

£¨3£©¡¡¡¡£¨´ó×÷Òµ£©ÒÔClassScanner¡£java¡¡×÷ΪÆðµã£¬¹¹ÔìÒ»¸öÌØÊâµÄ¹¤¾ß£¬ÓÃËüÕÒ³öÄÇЩËäÈ»¶¨Ò嵫´ÓδÓùý¡¡

µÄ·½·¨ºÍ×ֶΡ£¡¡¡¡

£¨4£©¡¡¡¡£¨´ó×÷Òµ£©ÀûÓÃJDBC£¬¹¹ÔìÒ»¸öÁªÂç¹ÜÀí³ÌÐò¡£ÈÃÕâ¸ö³ÌÐòÒÔÒ»¸öƽÃæÎļþÊý¾Ý¿âΪ»ù´¡£¬ÆäÖаüº¬ÁË¡¡

Ãû×Ö¡¢µØÖ·¡¢µç»°ºÅÂë¡¢E¡­mail¡¡µØÖ·µÈÁªÏµ×ÊÁÏ¡£Ó¦¸ÃÄÜÏòÊý¾Ý¿âÀï·½±ãµØ¼ÓÈëÐÂÃû×Ö¡£¼üÈëÒª²éÕÒµÄÃû×Ö¡¡

ʱ£¬Çë²ÉÓÃÔÚµÚ15ÕµÄVLookup¡£java¡¡Àï½éÉܹýµÄÄÇÖÖÃû×Ö×Ô¶¯Ìî³ä¼¼Êõ¡£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡649¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡651¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¸½Â¼¡¡A¡¡Ê¹Ó÷ǡ¡JAVA¡¡´úÂë¡¡¡¡



¡¡¡¡

JAVA¡¡ÓïÑÔ¼°Æä±ê×¼API¡¡£¨Ó¦ÓóÌÐò±à³Ì½Ó¿Ú£©Ó¦¸¶Ó¦ÓóÌÐòµÄ±àдÒѴ´ÂÓÐÓà¡£µ«ÔÚijЩÇé¿öÏ£¬»¹ÊDZØÐë¡¡

ʹÓ÷ǡ¡JAVA¡¡±àÂë¡£ÀýÈ磬ÎÒÃÇÓÐʱҪ·ÃÎʲÙ×÷ϵͳµÄרÓÃÌØÐÔ£¬ÓëÌØÊâµÄÓ²¼þÉ豸´ò½»µÀ£¬Öظ´Ê¹ÓÃÏÖÓеġ¡

·ÇJava¡¡½Ó¿Ú£¬»òÕßҪʹÓá°¶Ôʱ¼äÃô¸Ð¡±µÄ´úÂë¶Î£¬µÈµÈ¡£Óë·Ç¡¡Java¡¡´úÂëµÄ¹µÍ¨ÒªÇó»ñµÃ±àÒëÆ÷ºÍ¡°ÐéÄâ¡¡

»ú¡±µÄרÃÅÖ§³Ö£¬²¢Ð踽¼ÓµÄ¹¤¾ß½«Java¡¡´úÂëÓ³Éä³É·Ç¡¡Java¡¡´úÂ루ҲÓÐÒ»¸ö¼òµ¥·½·¨£ºÔÚµÚ¡¡15Õµġ°Ò»¸ö¡¡

Web¡¡Ó¦Óá±Ð¡½ÚÖУ¬ÓиöÀý×Ó½âÊÍÁËÈçºÎÀûÓñê×¼ÊäÈëÊä³öͬ·ÇJava¡¡´úÂëÁ¬½Ó£©¡£Ä¿Ç°£¬²»Í¬µÄ¿ª·¢ÉÌΪÎÒ¡¡

ÃÇÌṩÁ˲»Í¬µÄ·½°¸£ºJava¡¡1¡£1¡¡ÓС°Java¡¡¹ÌÓнӿڡ±£¨Java¡¡Native¡¡Interface£¬JNI£©£¬Íø¾°Ìá³öÁË×Ô¼ºµÄ¡¡

¡¡¡°Java¡¡ÔËÐÐÆÚ½Ó¿Ú¡±£¨Java¡¡Runtime¡¡Interface£©¼Æ»®£¬¶ø΢ÈíÌṩÁËJ/Direct¡¢¡°±¾Ô´½Ó¿Ú¡±£¨Raw¡¡¡¡

Native¡¡Interface£¬RNI£©ÒÔ¼°Java/¡¡¼¯³É·½°¸¡£¡¡¡¡

¸÷¿ª·¢ÉÌÔÚÕâ¸öÎÊÌâÉÏËù³ÖµÄ²»Í¬Ì¬¶È¶Ô³ÌÐòÔ±ÊǷdz£²»ÀûµÄ¡£ÈôJava¡¡Ó¦ÓñØÐëµ÷ÓùÌÓз½·¨£¬Ôò³ÌÐòÔ±»ò¡¡

ÐíҪʵÏÖ¹ÌÓз½·¨µÄ²»Í¬°æ±¾¡ª¡ª¾ßÌåÓÉÓ¦ÓóÌÐòÔËÐеÄƽ̨¾ö¶¨¡£³ÌÐòÔ±Ò²Ðíʵ¼ÊÐèÒª²»Í¬°æ±¾µÄJava¡¡´ú¡¡

Â룬ÒÔ¼°²»Í¬µÄJava¡¡ÐéÄâ»ú¡£¡¡¡¡

ÁíÒ»¸ö·½°¸ÊÇCORBA¡¡£¨Í¨ÓöÔÏóÇëÇó´úÀí½á¹¹£©£¬ÕâÊÇÓÉOMG¡¡£¨¶ÔÏó¹ÜÀí×飬һ¼Ò·ÇÓ®ÀûÐԵĹ«Ë¾Ð­»á£©¿ª·¢¡¡

µÄÒ»ÖÖ¼¯³É¼¼Êõ¡£CORBA¡¡²¢·ÇÈκÎÓïÑÔµÄÒ»²¿·Ö£¬Ö»ÊÇʵÏÖͨÓÃͨÐÅ×ÜÏß¼°·þÎñµÄÒ»Öֹ淶¡£ÀûÓÃËü¿ÉÔÚÓÉ¡¡

²»Í¬ÓïÑÔʵÏֵĶÔÏóÖ®¼äʵÏÖ¡°Ï໥²Ù×÷¡±µÄÄÜÁ¦¡£ÕâÖÖͨÐÅ×ÜÏßµÄÃû×Ö½Ð×÷ORB¡¡£¨¶ÔÏóÇëÇó´úÀí£©£¬ÊÇÓÉ¡¡

ÆäËû¿ª·¢ÉÌʵÏÖµÄÒ»ÖÖ²úÆ·£¬µ«²¢²»ÊôÓÚ¡¡Java¡¡ÓïÑԹ淶µÄÒ»²¿·Ö¡£¡¡¡¡

±¾¸½Â¼½«¶Ô¡¡JNI£¬J/DIRECT£¬RNI£¬JAVA/¡¡¼¯³ÉºÍ¡¡CORBA¡¡½øÐиÅÊö¡£µ«²»»á×÷¸üÉî²ã´ÎµÄ̽ÌÖ£¬ÉõÖÁÓÐʱ»¹¡¡

¼Ù¶¨¶ÁÕßÒѶÔÏà¹ØµÄ¸ÅÄîºÍ¼¼ÊõÓÐÁËÒ»¶¨³Ì¶ÈµÄÈÏʶ¡£µ«µ½×îºó£¬´ó¼ÒÓ¦¸ÃÄܹ»×ÔÐбȽϲ»Í¬µÄ·½·¨£¬²¢¸ù¡¡

¾Ý×Ô¼ºÒª½â¾öµÄÎÊÌâÌôÑ¡³ö×îÇ¡µ±µÄÒ»ÖÖ¡£¡¡¡¡



A¡£1¡¡Java¡¡¹ÌÓнӿڡ¡¡¡



JNI¡¡ÊÇÒ»ÖÖ°üÈݼ«¹ãµÄ±à³Ì½Ó¿Ú£¬ÔÊÐíÎÒÃÇ´Ó¡¡Java¡¡Ó¦ÓóÌÐòÀïµ÷ÓùÌÓз½·¨¡£ËüÊÇÔÚ¡¡Java¡¡1¡£1¡¡ÀïÐÂÔöµÄ£¬¡¡

ά³Ö×ÅÓëJava¡¡1¡£0¡¡µÄÏàÓ¦ÌØÐÔ¡ª¡ª¡¡¡°¹ÌÓз½·¨½Ó¿Ú¡±£¨NMI£©¡ª¡ªÄ³Ö̶ֳȵļæÈÝ¡£NMI¡¡Éè¼ÆÉÏһЩÌصãʹ¡¡

Æäδ»ñËùÓÐÐéÄâ»úµÄÖ§³Ö¡£¿¼Âǵ½Õâ¸öÔ­Òò£¬Java¡¡ÓïÑÔ½«À´µÄ°æ±¾¿ÉÄܲ»ÔÙÌṩ¶ÔNMI¡¡µÄÖ§³Ö£¬Õâ¶ùÒ²²»×¼¡¡

±¸ÌÖÂÛËü¡£¡¡¡¡

Ä¿Ç°£¬JNI¡¡Ö»ÄÜÓëÓÃC¡¡»òC£«£«Ð´³ÉµÄ¹ÌÓз½·¨´ò½»µÀ¡£ÀûÓÃJNI£¬ÎÒÃǵĹÌÓз½·¨¿ÉÒÔ£º¡¡¡¡

¡ö´´½¨¡¢¼ì²é¼°¸üÐÂJava¡¡¶ÔÏ󣨰üÀ¨Êý×éºÍ×Ö´®£©¡¡¡¡

¡öµ÷ÓÃJava¡¡·½·¨¡¡¡¡

¡ö·ý»ñºÍ¶ªÆú¡°Òì³£¡±¡¡¡¡

¡ö×°ÔØÀಢ»ñÈ¡ÀàÐÅÏ¢¡¡¡¡

¡ö½øÐÐÔËÐÐÆÚÀàÐͼì²é¡¡¡¡

ËùÒÔ£¬Ô­À´ÔÚJava¡¡ÖÐÄܶÔÀ༰¶ÔÏó×öµÄ¼¸ºõËùÓÐÊÂÇéÔÚ¹ÌÓз½·¨ÖÐͬÑù¿ÉÒÔ×öµ½¡£¡¡¡¡



A¡£1¡£1¡¡¡¡µ÷ÓùÌÓз½·¨¡¡¡¡



ÎÒÃÇÏÈ´ÓÒ»¸ö¼òµ¥µÄÀý×Ó¿ªÊ¼£ºÒ»¸öJava¡¡³ÌÐòµ÷ÓùÌÓз½·¨£¬ºóÕßÔÙµ÷ÓÃWin32¡¡µÄAPI¡¡º¯Êý¡¡

MessageBox£¨£©£¬ÏÔʾ³öÒ»¸öͼÐλ¯µÄÎı¾¿ò¡£Õâ¸öÀý×ÓÉÔºóÒ²»áÓëJ/Direct¡¡Ò»Ö¾Ê¹Óá£ÈôÄúµÄƽ̨²»ÊÇ¡¡

Win32£¬Ö»Ð轫°üº¬ÁËÏÂÊöÄÚÈݵÄC¡¡Í·£º¡¡¡¡

#include¡¡¡¡¡¡

Ìæ»»³É£º¡¡¡¡

#include¡¡¡¡¡¡

²¢½«¶ÔMessageBox£¨£©µÄµ÷Óû»³Éµ÷Óá¡printf£¨£©¡¡¼´¿É¡£¡¡¡¡

µÚÒ»²½ÊÇд³ö¶Ô¹ÌÓз½·¨¼°ËüµÄ×Ô±äÁ¿½øÐÐÉùÃ÷µÄ¡¡Java¡¡´úÂ룺¡¡¡¡

¡¡¡¡

class¡¡ShowMsgBox¡¡£û¡¡¡¡

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

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

¡¡¡¡¡¡¡¡app¡£ShowMessage£¨¡¨Generated¡¡with¡¡JNI¡¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡650¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡652¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡private¡¡native¡¡void¡¡ShowMessage£¨String¡¡msg£©£»¡¡¡¡

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

¡¡¡¡¡¡¡¡System¡£loadLibrary£¨¡¨MsgImpl¡¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

ÔÚ¹ÌÓз½·¨ÉùÃ÷µÄºóÃ棬¸úËæÓÐÒ»¸ö¡¡static¡¡´úÂë¿é£¬Ëü»áµ÷Óá¡System¡£loadLibrary£¨£©¡¡£¨¿ÉÔÚÈκÎʱºòµ÷Óá¡

Ëü£¬µ«ÕâÑù×ö¸üÇ¡µ±£©System¡£loadLibrary£¨£©½«Ò»¸ö¡¡DLL¡¡ÔØÈëÄڴ棬²¢½¨Á¢Í¬ËüµÄÁ´½Ó¡£DLL¡¡±ØÐëλÓÚÄúµÄ¡¡

ϵͳ·¾¶£¬»òÕßÔÚ°üº¬ÁËJava¡¡ÀàÎļþµÄĿ¼ÖС£¸ù¾Ý¾ßÌåµÄƽ̨£¬JVM¡¡»á×Ô¶¯Ìí¼ÓÊʵ±µÄÎļþÀ©Õ¹Ãû¡£¡¡¡¡

¡¡¡¡

1¡£¡¡C¡¡Í·ÎļþÉú³ÉÆ÷£ºjavah¡¡¡¡

ÏÖÔÚ±àÒëÄúµÄJava¡¡Ô´Îļþ£¬²¢¶Ô±àÒë³öÀ´µÄ¡£classÎļþÔËÐС¡javah¡£javah¡¡ÊÇÔÚ¡¡1¡£0°æÀïÌṩµÄ£¬µ«ÓÉÓÚÎÒ¡¡

ÃÇҪʹÓÃJava¡¡1¡£1¡¡JNI£¬ËùÒÔ±ØÐëÖ¸¶¨¡­jni¡¡²ÎÊý£º¡¡¡¡

javah¡¡¡­jni¡¡ShowMsgBox¡¡¡¡

javah¡¡»á¶ÁÈëÀàÎļþ£¬²¢ÎªÃ¿¸ö¹ÌÓз½·¨ÉùÃ÷ÔÚ¡¡C¡¡»òC£«£«Í·ÎļþÀïÉú³ÉÒ»¸öº¯ÊýÔ­ÐÍ¡£ÏÂÃæÊÇÊä³ö½á¹û¡ª¡ª¡¡

ShowMsgBox¡£h¡¡Ô´Îļþ£¨Îª·ûºÏ±¾ÊéµÄÒªÇó£¬ÉÔ΢½øÐÐÁËÒ»ÏÂÐ޸ģ©£º¡¡¡¡

¡¡¡¡

/*¡¡DO¡¡NOT¡¡EDIT¡¡THIS¡¡FILE¡¡¡¡¡¡

¡¡¡¡¡¡it¡¡is¡¡machine¡¡generated¡¡*/¡¡¡¡

#include¡¡¡¡¡¡

/*¡¡Header¡¡for¡¡class¡¡ShowMsgBox¡¡*/¡¡¡¡

¡¡¡¡

#ifndef¡¡_Included_ShowMsgBox¡¡¡¡

#define¡¡_Included_ShowMsgBox¡¡¡¡

#ifdef¡¡__cplusplus¡¡¡¡

extern¡¡¡¨C¡¨¡¡£û¡¡¡¡

#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¡¡ÒýÓ㿶øÇÒÀ¬»øÊÕ¼¯Æ÷ÔÚ¹ÌÓз½·¨µ÷ÓÃÆÚ¼äÓÖÔÚ×öʲôÄØ£¿¡¡¡¡

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

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

¡¡¡°ÉúÃüÆÚ¡±Óëµ÷Óùý³ÌϢϢÏà¹Ø£¬ËùÒÔÄܹ»±£Ö¤¶ÔÏóÔÚ¹ÌÓз½·¨µ÷ÓÃÆÚ¼äµÄÓÐЧÐÔ¡£¡¡¡¡

ÓÉÓÚÕâЩÒýÓûáÔÚÿ´Îº¯Êýµ÷ÓõÄʱºò´´½¨ºÍÆÆ»µ£¬ËùÒÔ²»¿ÉÔÚstatic¡¡±äÁ¿ÖÐÖÆ×÷¹ÌÓз½·¨µÄ¾Ö²¿¸±±¾£¨±¾¡¡

µØ¿½±´£©¡£ÈôÏ£ÍûÒ»¸öÒýÓÃÔÚº¯Êý´æÔÚÆÚ¼ä³ÖÐøÓÐЧ£¬¾ÍÐèÒªÒ»¸öÈ«¾ÖÒýÓá£È«¾ÖÒýÓò»ÊÇÓÉJVM¡¡´´½¨µÄ£¬¡¡

µ«Í¨¹ýµ÷ÓÃÌض¨µÄ¡¡JNI¡¡º¯Êý£¬³ÌÐòÔ±¿É½«¾Ö²¿ÒýÓÃÀ©Õ¹ÎªÈ«¾ÖÒýÓᣴ´½¨Ò»¸öÈ«¾ÖÒýÓÃʱ£¬Ðè¶ÔÒýÓöÔÏóµÄ¡¡

¡¡¡°Éú´æʱ¼ä¡±¸ºÔð¡£È«¾ÖÒýÓã¨ÒÔ¼°ËüÒýÓõĶÔÏ󣩻áÒ»Ö±ÁôÔÚÄÚ´æÀֱµ½ÓÃÌض¨µÄJNI¡¡º¯ÊýÃ÷È·ÊÍ·ÅÁË¡¡

Õâ¸öÒýÓá£ËüÀàËÆÓÚC¡¡µÄmalloc£¨£©ºÍ¡¡free£¨£©¡£¡¡¡¡



A¡£1¡£4¡¡JNI¡¡ºÍ¡¡Java¡¡Òì³£¡¡¡¡



ÀûÓá¡JNI£¬¿É¶ªÆú¡¢²¶×½¡¢´òÓ¡ÒÔ¼°ÖØжªÆúJava¡¡Òì³££¬¾ÍÏóÔÚÒ»¸ö¡¡Java¡¡³ÌÐòÀïÄÇÑù¡£µ«¶Ô³ÌÐòÔ±À´Ëµ£¬¡¡

Ðè×ÔÐе÷ÓÃרÓõÄJNI¡¡º¯Êý£¬ÒÔ±ã¶ÔÒì³£½øÐд¦Àí¡£ÏÂÃæÁгöÓÃÓÚÒì³£´¦ÀíµÄһЩJNI¡¡º¯Êý£º¡¡¡¡

¡öThrow£¨£©£º¶ªÆúÒ»¸öÏÖÓеÄÒì³£¶ÔÏó£»ÔÚ¹ÌÓз½·¨ÖÐÓÃÓÚÖØжªÆúÒ»¸öÒì³£¡£¡¡¡¡

¡öThrowNew£¨£©£ºÉú³ÉÒ»¸öеÄÒì³£¶ÔÏ󣬲¢½«Æ䶪Æú¡£¡¡¡¡

¡öExceptionOccurred£¨£©£ºÅжÏÒ»¸öÒì³£ÊÇ·ñÒѱ»¶ªÆú£¬µ«ÉÐδÇå³ý¡£¡¡¡¡

¡öExceptionDescribe£¨£©£º´òÓ¡Ò»¸öÒì³£ºÍ¶ÑÕ»¸ú×ÙÐÅÏ¢¡£¡¡¡¡

¡öExceptionClear£¨£©£ºÇå³
·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨10£© ²È£¨9£©
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæдԭ´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøŶ£¡