°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
´úÂë¡£¡¡¡¡
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¡¡ÔÚλÖñàºÅ¡¡3¡¡´¦°üº¬ÁËÒ»¸öº¯Êý¡£ÄǸöº¯Êý¡¡
»ñÈ¡Á½¸öÕûÊý×÷Ϊ×Ô±äÁ¿£¬²¢·µ»ØÁ½¸öÕûÊýµÄºÍ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡656¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡658¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡
public¡¡class¡¡ByOrdinal¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String¡¡args£§£§£©¡¡¡¡¡¡
¡¡¡¡throws¡¡UnsatisfiedLinkError¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡int¡¡j=3£»¡¡k=9£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Result¡¡of¡¡DLL¡¡function£º¡¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£«¡¡Add£¨j£»k£©£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡/**¡¡@dll¡£import£¨¡¨MYMATH¡¨£»¡¡entrypoint¡¡=¡¡¡¨#3¡¨£©¡¡*/¡¡¡¡
¡¡¡¡private¡¡static¡¡native¡¡int¡¡Add£¨int¡¡op1£»int¡¡op2£©£»¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
¿ÉÒÔ¿´³ö£¬Î¨Ò»µÄ²îÒì¾ÍÊÇentrypoint¡¡×Ô±äÁ¿µÄÐÎʽ¡£¡¡¡¡
¡¡¡¡
2¡£¡¡½«@dll¡£import¡¡Ó¦ÓÃÓÚÕû¸öÀà¡¡¡¡
@dll¡£import¡¡Òýµ¼ÃüÁî¿ÉÓ¦ÓÃÓÚÕû¸öÀà¡£Ò²¾ÍÊÇ˵£¬ÄǸöÀàµÄËùÓз½·¨¶¼ÊÇÔÚÏàͬµÄDLL¡¡ÀïʵÏֵģ¬²¢¾ßÓС¡
ÏàͬµÄÁ´½ÓÊôÐÔ¡£Òýµ¼ÃüÁî²»»áÓÉ×ÓÀà¼Ì³Ð£»¿¼Âǵ½Õâ¸öÔÒò£¬¶øÇÒÓÉÓÚ¡¡DLL¡¡ÀïµÄº¯ÊýÊÇ×ÔÈ»µÄ¡¡static¡¡º¯¡¡
Êý£¬ËùÒÔ¸ü¼ÑµÄÉè¼Æ·½°¸Êǽ«API¡¡º¯Êý·â×°µ½Ò»¸ö¶ÀÁ¢µÄÀàÀÈçÏÂËùʾ£º¡¡¡¡
¡¡¡¡
/**¡¡@dll¡£import£¨¡¨USER32¡¨£©¡¡*/¡¡¡¡
class¡¡MyUser32Access¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡native¡¡int¡¡¡¡¡¡
¡¡¡¡MessageBox£¨int¡¡hwndOwner£»¡¡String¡¡text£»¡¡¡¡
¡¡¡¡¡¡¡¡String¡¡title£»¡¡int¡¡fuStyle£©£»¡¡¡¡
¡¡¡¡public¡¡native¡¡static¡¡boolean¡¡¡¡¡¡
¡¡¡¡MessageBeep£¨int¡¡uType£©£»¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡WholeClass¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String¡¡args£§£§£©¡¡¡¡¡¡
¡¡¡¡throws¡¡UnsatisfiedLinkError¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡MyUser32Access¡£MessageBeep£¨4£©£»¡¡¡¡
¡¡¡¡¡¡¡¡MyUser32Access¡£MessageBox£¨0£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨Created¡¡by¡¡the¡¡MessageBox£¨£©¡¡Win32¡¡func¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨Thinking¡¡in¡¡Java¡¨£»¡¡0£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
ÓÉÓÚMessageBeep£¨£©ºÍ¡¡MessageBox£¨£©º¯ÊýÒÑÔÚ²»Í¬µÄÀàÀï±»ÉùÃ÷³É¡¡static¡¡º¯Êý£¬ËùÒÔ±ØÐëÔÚµ÷ÓÃËüÃÇʱ¹æ¶¨¡¡
×÷ÓÃÓò¡£´ó¼ÒÒ²ÐíÈÏΪ±ØÐëÓÃÉÏÊöµÄ·½·¨½«ËùÓÐWin32¡¡API¡¡£¨º¯Êý¡¢³£ÊýºÍÊý¾ÝÀàÐÍ£©¶¼Ó³Éä³ÉJava¡¡Àà¡£µ«¡¡
ÐÒÔ˵ÄÊÇ£¬¸ù±¾²»±ØÕâÑù×ö¡£¡¡¡¡
A¡£3¡£2¡¡¡£ms¡£win32¡¡°ü¡¡¡¡
Win32¡¡API¡¡µÄÌå»ýÏ൱ÅӴ󡪡ª°üº¬ÁËÊýÒÔǧ¼ÆµÄº¯Êý¡¢³£ÊýÒÔ¼°Êý¾ÝÀàÐÍ¡£µ±È»£¬ÎÒÃDz¢²»Ï뽫ÿ¸öWin32¡¡¡¡
API¡¡º¯Êý¶¼Ð´³É¶ÔÓ¦Java¡¡ÐÎʽ¡£Î¢Èí¿¼Âǵ½ÁËÕâ¸öÎÊÌ⣬·¢ÐÐÁËÒ»¸öJava¡¡°ü£¬¿Éͨ¹ý¡¡J/Direct¡¡½«¡¡Win32¡¡¡¡
API¡¡Ó³Éä³É¡¡Java¡¡Àà¡£Õ