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

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

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


·ÃÎÊ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£¨£©£ºÇå³ýÒ»¸ö´ý¾öµÄÒì³£¡£¡¡¡¡

¡öFatalError£¨£©£ºÔì³ÉÒ»¸öÑÏÖØ´íÎ󣬲»·µ»Ø¡£¡¡¡¡

ÔÚËùÓÐÕâЩº¯ÊýÖУ¬×î²»ÄܺöÊӵľÍÊÇExceptionOccurred£¨£©ºÍExceptionClear£¨£©¡£´ó¶àÊýJNI¡¡º¯Êý¶¼Äܲú¡¡

ÉúÒì³££¬¶øÇÒûÓÐÏóÔÚ¡¡Java¡¡µÄtry¡¡¿éÄÚµÄÄÇÖÖÓïÑÔÌØÐԿɹ©ÀûÓá£ËùÒÔÔÚÿһ´Î¡¡JNI¡¡º¯Êýµ÷ÓÃÖ®ºó£¬¶¼±ØÐë¡¡

µ÷ÓÃExceptionOccurred£¨£©£¬Á˽âÒì³£ÊÇ·ñÒѱ»¶ªÆú¡£ÈôÕì²âµ½Ò»¸öÒì³££¬¿ÉÑ¡Ôñ¶ÔÆä¼ÓÒÔ¿ØÖÆ£¨¿ÉÄÜʱ»¹¡¡

ÒªÖØжªÆúËü£©¡£È»¶ø£¬±ØÐëÈ·±£Òì³£×îÖÕ±»Çå³ý¡£Õâ¿ÉÒÔÔÚ×Ô¼ºµÄº¯ÊýÖÐÓÃExceptionClear£¨£©À´ÊµÏÖ£»Èô¡¡

Òì³£±»ÖØжªÆú£¬Ò²¿ÉÄÜÔÚÆäËûijЩº¯ÊýÖнøÐС£µ«ÎÞÂÛÈçºÎ£¬ÕâÒ»¹¤×÷ÊDZز»¿ÉÉٵġ£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡654¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡656¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

ÎÒÃDZØÐë±£Ö¤Òì³£±»³¹µ×Çå³ý¡£·ñÔò£¬¼ÙÈôÔÚÒ»¸öÒì³£´ý¾öµÄÇé¿öϵ÷ÓÃÒ»¸öJNI¡¡º¯Êý£¬»ñµÃµÄ½á¹ûÍùÍùÊÇ¡¡

ÎÞ·¨Ô¤ÖªµÄ¡£Ò²ÓÐÉÙÊý¼¸¸öJNI¡¡º¯Êý¿ÉÔÚÒ쳣ʱ°²È«µ÷Ó㻵±È»£¬ËüÃǶ¼ÊÇרÃŵÄÒì³£¿ØÖƺ¯Êý¡£¡¡¡¡



A¡£1¡£5¡¡JNI¡¡ºÍÏ̴߳¦Àí¡¡¡¡



ÓÉÓÚJava¡¡ÊÇÒ»ÖÖ¶àÏß³ÌÓïÑÔ£¬¼¸¸öÏ߳̿ÉÄÜͬʱ·¢³ö¶ÔÒ»¸ö¹ÌÓз½·¨µÄµ÷Óã¨ÈôÁíÒ»¸öÏ̷߳¢³öµ÷Ó㬹ÌÓС¡

·½·¨¿ÉÄÜÔÚÔËÐÐÆÚ¼äÔÝÍ££©¡£´Ëʱ£¬ÍêÈ«ÒªÓɳÌÐòÔ±À´±£Ö¤¹ÌÓе÷ÓÃÔÚ¶àÏ̵߳Ļ·¾³Öа²È«½øÐС£ÀýÈ磬Ҫ¡¡

·À·¶ÓÃÒ»ÖÖδ½øÐмàÊӵķ½·¨Ð޸Ĺ²ÏíÊý¾Ý¡£´Ëʱ£¬ÎÒÃÇÖ÷ÒªÓÐÁ½¸öÑ¡Ôñ£º½«¹ÌÓз½·¨ÉùÃ÷Ϊ¡°Í¬²½¡±£¬»ò¡¡

ÔÚ¹ÌÓз½·¨ÄÚ²¿²ÉÈ¡ÆäËûijЩ²ßÂÔ£¬È·±£Êý¾Ý´¦ÀíÕýÈ·µØ²¢·¢½øÐС£¡¡¡¡

´ËÍ⣬¾ø¶Ô²»ÒªÍ¨¹ýÏ̴߳«µÝ¡¡JNIEnv£¬ÒòΪËüÖ¸ÏòµÄÄÚ²¿½á¹¹ÊÇÔÚ¡°Ã¿Ï̡߳±µÄ»ù´¡ÉÏ·ÖÅäµÄ£¬¶øÇÒ°üº¬ÁË¡¡

Ö»¶ÔÄÇЩÌض¨µÄÏ̲߳ÅÓÐÒâÒåµÄÐÅÏ¢¡£¡¡¡¡



A¡£1¡£6¡¡¡¡Ê¹ÓÃÏֳɴúÂë¡¡¡¡



ΪʵÏÖJNI¡¡¹ÌÓз½·¨£¬×î¼òµ¥µÄ·½·¨¾ÍÊÇÔÚÒ»¸öJava¡¡ÀàÀï±àд¹ÌÓз½·¨µÄÔ­ÐÍ£¬±àÒëÄǸöÀ࣬ÔÙͨ¹ý¡¡javah¡¡

ÔËÐС£class¡¡Îļþ¡£µ«¼ÙÈôÎÒÃÇÒÑÓÐÒ»¸ö´óÐ͵ġ¢ÔçÒÑ´æÔڵĴúÂë¿â£¬¶øÇÒÏë´ÓJava¡¡Àïµ÷ÓÃËüÃÇ£¬´ËʱÓָá¡

ÈçºÎÊǺÃÄØ£¿²»¿É½«DLL¡¡ÖеÄËùÓк¯Êý¸üÃû£¬Ê¹Æä·ûºÏ¡¡JNI¡¡ÃüÃû¹æÔò£¬ÕâÖÖ·½°¸ÊDz»¿ÉÐеġ£×îºÃµÄ·½·¨ÊÇ¡¡

ÔÚÔ­À´µÄ´úÂë¿â¡°ÍâÃ桱дһ¸ö·â×°DLL¡£Java¡¡´úÂë»áµ÷ÓÃС¡DLL¡¡ÀïµÄº¯Êý£¬ºóÕßÔÙµ÷ÓÃԭʼµÄDLL¡¡º¯Êý¡£¡¡

Õâ¸ö·½·¨²¢·Ç½ö½öÊÇÒ»ÖÖ½â¾ö·½°¸£»´ó¶àÊýÇé¿öÏ£¬ÎÒÃÇÉõÖÁ±ØÐëÕâÑù×ö£¬ÒòΪ±ØÐëÃæÏò¶ÔÏóÒýÓõ÷Óá¡JNI¡¡

º¯Êý£¬·ñÔòÎÞ·¨Ê¹ÓÃËüÃÇ¡£¡¡¡¡



A¡£2¡¡Î¢ÈíµÄ½â¾ö·½°¸¡¡¡¡



µ½±¾ÊéÍê¸åʱΪֹ£¬Î¢ÈíÈÔδÌṩ¶ÔJNI¡¡µÄÖ§³Ö£¬Ö»ÊÇÓÃ×Ô¼ºµÄרÀû·½·¨ÌṩÁ˶ԷÇJava¡¡´úÂëµ÷ÓõÄÖ§³Ö¡£¡¡

ÕâÒ»Ö§³ÖÄÚ½¨µ½±àÒëÆ÷¡¡Microsoft¡¡JVM¡¡ÒÔ¼°Íⲿ¹¤¾ßÖС£Ö»ÓгÌÐòÓá¡Microsoft¡¡Java¡¡±àÒëÆ÷±àÒ룬¶øÇÒÖ»ÓС¡

ÔÚMicrosoft¡¡Java¡¡ÐéÄâ»ú£¨JVM£©ÉÏÔËÐеÄʱºò£¬±¾½Ú½²ÊöµÄÌØÐԲŻáÓÐЧ¡£Èô¼Æ»®ÔÚÒòÌØÍøÉÏ·¢ÐÐ×Ô¼ºµÄ¡¡

Ó¦Ó㬻òÕß±¾µ¥Î»µÄÄÚÁªÍø½¨Á¢ÔÚ²»Í¬Æ½Ì¨µÄ»ù´¡ÉÏ£¬¾Í¿ÉÄܳÉΪһ¸öÑÏÖصÄÎÊÌâ¡£¡¡¡¡

΢ÈíÓëWin32¡¡´úÂëµÄ½Ó¿ÚΪÎÒÃÇÌṩÁËÁ¬½Ó¡¡Win32¡¡µÄÈýÖÖ;¾¶£º¡¡¡¡

£¨1£©¡¡J/Direct£º·½±ãµ÷ÓÃWin32¡¡DLL¡¡º¯ÊýµÄÒ»ÖÖ;¾¶£¬¾ßÓÐijЩÏÞÖÆ¡£¡¡¡¡

£¨2£©¡¡±¾Ô­½Ó¿Ú£¨RNI£©£º¿Éµ÷ÓÃWin32¡¡DLL¡¡º¯Êý£¬µ«±ØÐë×ÔÐнâ¾ö¡°À¬»øÊÕ¼¯¡±ÎÊÌâ¡£¡¡¡¡

£¨3£©¡¡Java/¡¡¼¯³É£º¿É´Ó¡¡Java¡¡ÀïÖ±½Ó½Òʾ»òµ÷Óá¡¡¡·þÎñ¡£¡¡¡¡

ºóÐøµÄС½Ú½«·Ö±ð̽ÌÖÕâÈýÖÖ¼¼Êõ¡£¡¡¡¡

д×÷±¾ÊéµÄʱºò£¬ÕâЩÌØÐÔ¾ùͨ¹ýÁËMicrosoft¡¡SDK¡¡for¡¡Java¡¡2¡£0¡¡beta¡¡2¡¡µÄÖ§³Ö¡£¿É´Ó΢Èí¹«Ë¾µÄWeb¡¡Õ¾¡¡

µãÏÂÔØÕâ¸ö¿ª·¢Æ½Ì¨£¨Òª¾­ÀúÒ»¸öÍ´¿àµÄÑ¡Ôñ¹ý³Ì£¬ËûÃǽÐ×÷¡°Active¡¡Setup¡±£©¡£Java¡¡SDK¡¡ÊÇÒ»Ì×ÃüÁîÐС¡

¹¤¾ßµÄ¼¯ºÏ£¬µ«±àÒëÒýÇæ¿ÉÇáÒ×ǶÈëDeveloper¡¡Studio¡¡»·¾³£¬ÒÔ±ãÎÒÃÇÓá¡Visual¡¡J£«£«¡¡1¡£1¡¡À´±àÒë¡¡Java¡¡1¡£1¡¡

´úÂë¡£¡¡¡¡



A¡£3¡¡J/Direct¡¡¡¡¡¡



J/Direct¡¡Êǵ÷Óá¡Win32¡¡DLL¡¡º¯Êý×î¼òµ¥µÄ·½Ê½¡£ËüµÄÖ÷ÒªÉè¼ÆÄ¿±êÊÇÓëWin32API¡¡´ò½»µÀ£¬µ«ÍêÈ«¿ÉÓÃËüµ÷¡¡

ÓÃÆäËûÈκΡ¡API¡£µ«ÊÇ£¬¾¡¹ÜÕâÒ»ÌØÐԷdz£·½±ã£¬µ«ËüͬʱҲÔì³ÉÁËijЩÏÞÖÆ£¬ÇÒ½µµÍÁËÐÔÄÜ£¨ÓëRNI¡¡Ïà¡¡

±È£©¡£µ«J/Direct¡¡Ò²ÓÐһЩÃ÷ÏÔµÄÓŵ㡣Ê×ÏÈ£¬³ýÏ£Íûµ÷ÓõÄÄǸöDLL¡¡ÀïµÄ´úÂëÖ®Í⣬ûÓбØÒªÔÙ±àд¶îÍâ¡¡

µÄ·ÇJava¡¡´úÂ룬»»ÑÔÖ®£¬ÎÒÃDz»ÐèÒªÒ»¸ö·â×°Æ÷»òÕß´úÀí£¯´æ¸ùDLL¡£Æä´Î£¬º¯Êý×Ô±äÁ¿Óë±ê×¼Êý¾ÝÀàÐÍÖ®¡¡

¼äʵÏÖÁË×Ô¶¯×ª»»¡£Èô±ØÐë´«µÝÓû§×Ô¶¨ÒåµÄÊý¾ÝÀàÐÍ£¬ÄÇô¡¡J/Direct¡¡¿ÉÄܲ»°´ÎÒÃǵÄÏ£Íû¹¤×÷¡£µÚÈý£¬¾Í¡¡

ÏóÏÂÀýչʾµÄÄÇÑù£¬Ëü·Ç³£¼òµ¥ºÍÖ±½Ó¡£Ö»ÐèÉÙÊý¼¸ÐУ¬Õâ¸öÀý×Ó±ãÄܵ÷ÓÃWin32¡¡API¡¡º¯ÊýMessageBox£¨£©£¬¡¡

ËüÄܵ¯³öÒ»¸öСµÄģ̬´°¿Ú£¬²¢´øÓÐÒ»¸ö±êÌâ¡¢Ò»ÌõÏûÏ¢¡¢Ò»¸ö¿ÉÑ¡µÄͼ±êÒÔ¼°¼¸¸ö°´Å¥¡£¡¡¡¡

¡¡¡¡

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

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

¡¡¡¡throws¡¡UnsatisfiedLinkError¡¡¡¡¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡MessageBox£¨0£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨Created¡¡by¡¡the¡¡MessageBox£¨£©¡¡Win32¡¡func¡¨£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨Thinking¡¡in¡¡Java¡¨£»¡¡0£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡655¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡657¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡/**¡¡@dll¡£import£¨¡¨USER32¡¨£©¡¡*/¡¡¡¡

¡¡¡¡private¡¡static¡¡native¡¡int¡¡¡¡¡¡

¡¡¡¡MessageBox£¨int¡¡hwndOwner£»¡¡String¡¡text£»¡¡¡¡

¡¡¡¡¡¡¡¡String¡¡title£»¡¡int¡¡fuStyle£©£»¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

ÁîÈËÕ𾪵ÄÊÇ£¬ÕâÀï±ãÊÇÎÒÃÇÀûÓá¡J/Direct¡¡µ÷ÓÃWin32¡¡DLL¡¡º¯ÊýËùÐèµÄÈ«²¿´úÂë¡£ÆäÖеĹؼüÊÇλÓÚʾ·¶´ú¡¡

Âëµ×²¿µÄMessageBox£¨£©ÉùÃ÷֮ǰµÄ@dll¡¡¡£import¡¡Òýµ¼ÃüÁî¡£Ëü±íÃæÉÏ¿´ÊÇÒ»Ìõ×¢ÊÍ£¬µ«Êµ¼Ê²¢·ÇÈç´Ë¡£ËüµÄ¡¡

×÷ÓÃÊǸæËß±àÒëÆ÷£ºÒýµ¼ÃüÁîÏÂÃæµÄº¯ÊýÊÇÔÚ¡¡USER32¡¡DLL¡¡ÀïʵÏֵģ¬¶øÇÒÓ¦ÏàÓ¦µØµ÷Óá£ÎÒÃÇÒª×öµÄÈ«²¿Ê¡¡

Çé¾ÍÊÇÌṩÓëDLL¡¡ÄÚʵÏֵĺ¯ÊýÏà·ûµÄÒ»¸öÔ­ÐÍ£¬²¢µ÷Óú¯Êý¡£µ«ÊÇÎãÐèÔÚJava¡¡°æ±¾ÀïÊÖ¹¤¼üÈëÐèÒªµÄÿһ¡¡

¸öWin32¡¡API¡¡º¯Êý£¬Ò»¸öMicrosoft¡¡Java¡¡°ü»á°ïÎÒÃÇ×öÕâ¼þÊÂÇ飨ºÜ¿ì¾Í»áÏêϸ½âÊÍ£©¡£ÎªÁËÈÃÕâ¸öÀý×ÓÕý¡¡

³£¹¤×÷£¬º¯Êý±ØÐë¡°°´Ãû³Æ¡±ÓÉDLL¡¡µ¼³ö¡£µ«ÊÇ£¬Ò²¿ÉÒÔÓÃ@dll¡£import¡¡Òýµ¼ÃüÁî¡°°´Ë³Ðò¡±Á´½Ó¡£¾Ù¸öÀý¡¡

×ÓÀ´Ëµ£¬ÎÒÃÇ¿ÉÖ¸¶¨º¯ÊýÔÚDLL¡¡ÀïµÄÈë¿ÚλÖá£ÉÔºó»¹»á¾ßÌå½²Êö@dll¡£import¡¡Òýµ¼ÃüÁîµÄÌØÐÔ¡£¡¡¡¡

Ó÷ÇJava¡¡´úÂë½øÐÐÁ´½ÓµÄÒ»¸öÖØÒªÎÊÌâ¾ÍÊǺ¯Êý²ÎÊýµÄ×Ô¶¯ÅäÖá£ÕýÈç´ó¼Ò¿´µ½µÄÄÇÑù£¬MessageBox£¨£©µÄ¡¡

Java¡¡ÉùÃ÷²ÉÓÃÁËÁ½¸ö×Ö´®×Ô±äÁ¿£¬µ«Ô­À´µÄC¡¡·½°¸Ôò²ÉÓÃÁËÁ½¸ö¡¡char¡¡Ö¸Õë¡£±àÒëÆ÷»á°ïÖúÎÒÃÇ×Ô¶¯×ª»»±ê¡¡

×¼Êý¾ÝÀàÐÍ£¬Í¬Ê±×ñÕÕ±¾ÕºóÒ»½ÚÒª½²ÊöµÄ¹æÔò¡£¡¡¡¡

×îºÃ£¬´ó¼Ò»òÐíÒÑ×¢Òâµ½ÁËmain£¨£©ÉùÃ÷Öеġ¡UnsatisfiedLinkError¡¡Òì³£¡£ÔÚÔËÐÐÆÚµÄʱºò£¬Ò»µ©Á´½Ó³ÌÐò¡¡

²»ÄÜ´Ó·ÇJava¡¡º¯ÊýÀï½âÎö³ö·ûºÅ£¬¾Í»á´¥·¢ÕâÒ»Òì³££¨Ê¼þ£©¡£Õâ¿ÉÄÜÊÇÓɶ෽ÃæµÄÔ­ÒòÔì³ÉµÄ£º¡£dll¡¡ÎÄ¡¡

¼þδÕÒµ½£»²»ÊÇÒ»¸öÓÐЧµÄDLL£»»òÕßJ/Direct¡¡Î´»ñÄúËùʹÓõÄÐéÄâ»úµÄÖ§³Ö¡£ÎªÁËʹDLL¡¡Äܱ»ÕÒµ½£¬Ëü±Ø¡¡

ÐëλÓÚWindows¡¡»òWindowsSystem¡¡Ä¿Â¼Ï£¬Î»ÓÚÓÉPATH¡¡»·¾³±äÁ¿ÁгöµÄÒ»¸öĿ¼ÖУ¬»òÕßλÓں͡£class¡¡ÎÄ¡¡

¼þÏàͬµÄĿ¼¡£J/Direct¡¡»ñµÃÁË¡¡Microsoft¡¡Java¡¡±àÒëÆ÷¡¡1¡£02¡£4213¡¡°æ±¾¼°¸ü¸ß°æ±¾µÄÖ§³Ö£¬Ò²»ñµÃÁË¡¡

Microsoft¡¡JVM¡¡4¡£79¡£2164¡¡¼°¸ü¸ß°æ±¾µÄÖ§³Ö¡£ÎªÁ˽â×Ô¼º±àÒëÆ÷µÄ°æ±¾ºÅ£¬ÇëÔÚÃüÁîÐÐÏÂÔËÐС¡JVC£¬²»Òª¼Ó¡¡

ÈκβÎÊý¡£ÎªÁ˽⡡JVM¡¡µÄ°æ±¾ºÅ£¬ÇëÕÒµ½msjava¡£dll¡¡µÄͼ±ê£¬²¢ÀûÓÃÓÒ¼üµ¯³ö²Ëµ¥¹Û²ìËüµÄÊôÐÔ¡£¡¡¡¡



A¡£3¡£1¡¡@dll¡£import¡¡Òýµ¼ÃüÁî¡¡¡¡



×÷ΪʹÓÃJ/Direct¡¡Î¨Ò»µÄ;¾¶£¬@dll¡£import¡¡Òýµ¼ÃüÁîÏ൱Áé»î¡£ËüÌṩÁËΪÊýÖÚ¶àµÄÐ޸ķû£¬¿ÉÓÃËüÃÇ×Ô¡¡

¶¨Òåͬ·ÇJava¡¡´úÂ뽨Á¢Á´½Ó¹ØϵµÄ·½Ê½¡£ËüÒà¿ÉÓ¦ÓÃÓÚÀàÄÚµÄһЩ·½·¨£¬»òÓ¦ÓÃÓÚÕû¸öÀà¡£Ò²¾ÍÊÇ˵£¬ÎÒÃÇ¡¡

ÔÚÄǸöÀàÄÚÉùÃ÷µÄËùÓз½·¨¶¼ÊÇÔÚÏàͬµÄ¡¡DLL¡¡ÀïʵÏֵġ£ÏÂÃæÈÃÎÒÃǾßÌåÑо¿Ò»ÏÂÕâЩÌØÐÔ¡£¡¡¡¡

¡¡¡¡

1¡£¡¡±ðÃû´¦ÀíºÍ°´Ë³ÐòÁ´½Ó¡¡¡¡

ΪÁËʹ@dll¡£import¡¡Òýµ¼ÃüÁîÄÜÏóÉÏÃæÏÔʾµÄÄÇÑù¹¤×÷£¬DLL¡¡Äڵĺ¯Êý±ØÐë°´Ãû×Öµ¼³ö¡£È»¶ø£¬ÎÒÃÇÓÐʱÏëʹ¡¡

ÓÃÓëDLL¡¡ÀïԭʼÃû×Ö²»Í¬µÄÒ»¸öÃû×Ö£¨±ðÃû´¦Àí£©£¬·ñÔòº¯Êý¾Í¿ÉÄÜ°´±àºÅ£¨±ÈÈ簴˳Ðò£©µ¼³ö£¬¶ø²»ÊÇ°´¡¡

Ãû×Öµ¼³ö¡£ÏÂÃæÕâ¸öÀý×ÓÉùÃ÷ÁËFinestraDiMessaggio£¨£©¡¡£¨ÓÃÒâ´óÀûÓï˵µÄ¡°MessageBox¡±£©¡£ÕýÈç´ó¼Ò¿´¡¡

µ½µÄÄÇÑù£¬Ê¹ÓõÄÓï·¨ÊǷdz£¼òµ¥µÄ¡£¡¡¡¡

¡¡¡¡

public¡¡class¡¡Aliasing¡¡£û¡¡¡¡

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

¡¡¡¡throws¡¡UnsatisfiedLinkError¡¡¡¡¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡FinestraDiMessaggio£¨0£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨Created¡¡by¡¡the¡¡MessageBox£¨£©¡¡Win32¡¡func¡¨£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨Thinking¡¡in¡¡Java¡¨£»¡¡0£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡/**¡¡@dll¡£import£¨¡¨USER32¡¨£»¡¡¡¡¡¡

¡¡¡¡entrypoint=¡¨MessageBox¡¨£©¡¡*/¡¡¡¡

¡¡¡¡private¡¡static¡¡native¡¡int¡¡¡¡¡¡

¡¡¡¡FinestraDiMessaggio£¨int¡¡hwndOwner£»¡¡String¡¡text£»¡¡¡¡

¡¡¡¡¡¡¡¡String¡¡title£»¡¡int¡¡fuStyle£©£»¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

ÏÂÃæÕâ¸öÀý×ÓչʾÁËÈçºÎͬDLL¡¡Àï²¢·Ç°´Ãû×Öµ¼³öµÄÒ»¸öº¯Êý½¨Á¢Á´½Ó£¬ÄǸöº¯ÊýÊÂʵÊÇ°´ËüÃÇÔÚDLL¡¡ÀïµÄ¡¡

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