ÀÖÓãµç¾º

  • ½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

    È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

    c/c++Åàѵ¶¯Ì¬¿âµÄ·â×°ºÍʹÓÃ(¶þ)

    ¸üÐÂʱ¼ä:2016Äê10ÔÂ21ÈÕ16ʱ22·Ö À´Ô´:ÀÖÓã²¥¿ÍC++ÅàѵѧԺ ä¯ÀÀ´ÎÊý:

    1.2.3 ¾²Ì¬¿âÓÅȱµã

     
    • ¾²Ì¬¿â¶Ôº¯Êý¿âµÄÁ´½ÓÊÇ·ÅÔÚ±àÒëʱÆÚÍê³ÉµÄ£¬¾²Ì¬¿âÔÚ³ÌÐòµÄÁ´½Ó½×¶Î±»¸´ÖƵ½Á˳ÌÐòÖУ¬ºÍ³ÌÐòÔËÐеÄʱºòûÓйØÏµ£»
    • ³ÌÐòÔÚÔËÐÐʱÓ뺯Êý¿âÔÙÎ޹ϸð£¬ÒÆÖ²·½±ã¡£
    • À˷ѿռäºÍ×ÊÔ´£¬ËùÓÐÏà¹ØµÄÄ¿±êÎļþÓëÇ£Éæµ½µÄº¯Êý¿â±»Á´½ÓºÏ³ÉÒ»¸ö¿ÉÖ´ÐÐÎļþ¡£
     
     
    ÄÚ´æºÍ´ÅÅ̿ռä
    ¾²Ì¬Á´½ÓÕâÖÖ·½·¨ºÜ¼òµ¥£¬Ô­ÀíÉÏÒ²ºÜÈÝÒ×Àí½â£¬ÔÚ²Ù×÷ϵͳºÍÓ²¼þ²»·¢´ïµÄÔçÆÚ£¬¾ø´ó²¿ÃÅϵͳ²ÉÓÃÕâÖÖ·½°¸¡£Ëæ×żÆËã»úÈí¼þµÄ·¢Õ¹£¬ÕâÖÖ·½·¨µÄȱµãºÜ¿ì±©Â¶³öÀ´£¬ÄǾÍÊǾ²Ì¬Á´½ÓµÄ·½Ê½¶ÔÓÚ¼ÆËã»úÄÚ´æºÍ´ÅÅ̿ռäÀ˷ѷdz£ÑÏÖØ¡£ÌرðÊÇ¶à½ø³Ì²Ù×÷ϵͳÏ£¬¾²Ì¬Á´½Ó¼«´óµÄÀË·ÑÁËÄÚ´æ¿Õ¼ä¡£ÔÚÏÖÔÚµÄlinuxϵͳÖУ¬Ò»¸öÆÕͨ³ÌÐò»áÓõ½cÓïÑÔ¾²Ì¬¿âÖÁÉÙÔÚ1MBÒÔÉÏ£¬ÄÇôÈç¹û´ÅÅÌÖÐÓÐ2000¸öÕâÑùµÄ³ÌÐò£¬¾ÍÒªÀ˷ѽ«½ü2GBµÄ´ÅÅ̿ռ䡣
    ³ÌÐò¿ª·¢ºÍ·¢²¼
    ¿Õ¼äÀË·ÑÊǾ²Ì¬Á´½ÓµÄÒ»¸öÎÊÌ⣬ÁíÒ»¸öÎÊÌâÊǾ²Ì¬Á´½Ó¶Ô³ÌÐòµÄ¸üС¢²¿ÊðºÍ·¢²¼Ò²»á´øÀ´ºÜ¶àÂé·³¡£±ÈÈç³ÌÐòÖÐËùʹÓõÄmylib.libÊÇÓÉÒ»¸öµÚÈý·½³§ÉÌÌṩµÄ£¬µ±¸Ã³§É̸üÐÂÈÝÁ¿mylib.libµÄʱºò£¬ÄÇôÎÒÃǵijÌÐò¾ÍÒªÄõ½×îаæµÄmylib.lib£¬È»ºó½«ÆäÖØÐ±àÒëÁ´½Óºó£¬½«ÐµijÌÐòÕû¸ö·¢²¼¸øÓû§¡£ÕâÑùµÄ×öȱµãºÜÃ÷ÏÔ£¬¼´Ò»µ©³ÌÐòÖÐÓÐÈκÎÄ£¿é¸üУ¬Õû¸ö³ÌÐò¾ÍÒªÖØÐ±àÒëÁ´½Ó¡¢·¢²¼¸øÓû§£¬Óû§ÒªÖØÐ°²×°Õû¸ö³ÌÐò¡£
     

    1.3 vs϶¯Ì¬¿â´´½¨ºÍʹÓÃ

    Òª½â¾ö¿Õ¼äÀ˷Ѻ͸üÐÂÀ§ÄÑÕâÁ½¸öÎÊÌ⣬×î¼òµ¥µÄ°ì·¨¾ÍÊǰѳÌÐòµÄÄ£¿éÏ໥·Ö¸î¿ªÀ´£¬ÐγɶÀÁ¢µÄÎļþ£¬¶ø²»Êǽ«ËûÃǾ²Ì¬µÄÁ´½ÓÔÚÒ»Æð¡£¼òµ¥µØ½²£¬¾ÍÊDz»¶ÔÄÄЩ×é³É³ÌÐòµÄÄ¿±ê³ÌÐò½øÐÐÁ´½Ó£¬µÈ³ÌÐòÔËÐеÄʱºò²Å½øÐÐÁ´½Ó¡£Ò²¾ÍÊÇ˵£¬°ÑÕû¸öÁ´½Ó¹ý³ÌÍÆ³Ùµ½ÁËÔËÐÐʱÔÙ½øÐУ¬Õâ¾ÍÊǶ¯Ì¬Á´½ÓµÄ»ù±¾Ë¼Ïë¡£

    1.3.1 ¶¯Ì¬¿âµÄ´´½¨

    1. ´´½¨Ò»¸öÐÂÏîÄ¿£¬ÔÚÒѰ²×°µÄÄ£°åÖÐÑ¡Ôñ“³£¹æ”£¬ÔÚÓұߵÄÀàÐÍÏÂÑ¡Ôñ“¿ÕÏîÄ¿”£¬ÔÚÃû³ÆºÍ½â¾ö·½°¸Ãû³ÆÖÐÊäÈëmydll¡£µã»÷È·¶¨¡£
    2.ÔÚ½â¾ö·½°¸×ÊÔ´¹ÜÀíÆ÷µÄÍ·ÎļþÖÐÌí¼Ó,mydll.hÎļþ£¬ÔÚÔ´ÎļþÌí¼Ómydll.cÎļþ£¨¼´ÊµÏÖÎļþ£©¡£
    3.ÔÚtest.hÎļþÖÐÌí¼ÓÈçÏ´úÂ룺
    #ifndef TEST_H
    #define TEST_H
     
    __declspec(dllexport) int myminus(int a, int b);
     
    #endif
    1. ÔÚtest.cÎļþÖÐÌí¼ÓÈçÏ´úÂ룺
    #include"test.h"
    __declspec(dllexport) int myminus(int a, int b){
    return a - b;
    }
    5. ÅäÖÃÏîÄ¿ÊôÐÔ¡£ÒòΪÕâÊÇÒ»¸ö¶¯Ì¬Á´½Ó¿â£¬ËùÒÔÓ¦ÔÚÏîÄ¿ÊôÐԵēÅäÖÃÊôÐÔ”ÏÂÑ¡Ôñ“³£¹æ”£¬ÔÚÆäϵÄÅäÖÃÀàÐÍÖÐÑ¡Ôñ“¶¯Ì¬¿â£¨.dll£©¡£
    6.±àÒëÉú³ÉеĽâ¾ö·½°¸£¬ÔÚDebugÎļþ¼ÐÏ»áµÃµ½mydll.dll (¶ÔÏóÎļþ¿â£©£¬½«¸Ã.dllÎļþ¡¢.libÎļþºÍÏàӦͷÎļþ¸øÓû§£¬Óû§¾Í¿ÉÒÔʹÓøÿâÀïµÄº¯ÊýÁË¡£
    ÒÉÎÊÒ»£º__declspec(dllexport)ÊÇʲôÒâ˼£¿
    ¶¯Ì¬Á´½Ó¿âÖж¨ÒåÓÐÁ½ÖÖº¯Êý£ºµ¼³öº¯Êý(export  function)ºÍÄÚ²¿º¯Êý(internal  function)¡£ µ¼³öº¯Êý¿ÉÒÔ±»ÆäËüÄ£¿éµ÷Óã¬ÄÚ²¿º¯ÊýÔÚ¶¨ÒåËüÃǵÄDLL³ÌÐòÄÚ²¿Ê¹Óá£
     
    ÒÉÎʶþ£º¶¯Ì¬¿âµÄlibÎļþºÍ¾²Ì¬¿âµÄlibÎļþµÄÇø±ð£¿
    ÔÚʹÓö¯Ì¬¿âµÄʱºò£¬ÍùÍùÌṩÁ½¸öÎļþ£ºÒ»¸öÒýÈë¿â£¨.lib£©Îļþ£¨Ò²³Æ“µ¼Èë¿âÎļþ”£©ºÍÒ»¸öDLL£¨.dll£©Îļþ¡£ËäÈ»ÒýÈë¿âµÄºó׺ÃûÒ²ÊÇ“lib”£¬µ«ÊÇ£¬¶¯Ì¬¿âµÄÒýÈë¿âÎļþºÍ¾²Ì¬¿âÎļþÓÐ×ű¾ÖʵÄÇø±ð£¬¶ÔÒ»¸öDLLÎļþÀ´Ëµ£¬ÆäÒýÈë¿âÎļþ£¨.lib£©°üº¬¸ÃDLLµ¼³öµÄº¯ÊýºÍ±äÁ¿µÄ·ûºÅÃû£¬¶ø.dllÎļþ°üº¬¸ÃDLLʵ¼ÊµÄº¯ÊýºÍÊý¾Ý¡£ÔÚʹÓö¯Ì¬¿âµÄÇé¿öÏ£¬ÔÚ±àÒëÁ´½Ó¿ÉÖ´ÐÐÎļþʱ£¬Ö»ÐèÒªÁ´½Ó¸ÃDLLµÄÒýÈë¿âÎļþ£¬¸ÃDLLÖеĺ¯Êý´úÂëºÍÊý¾Ý²¢²»¸´ÖƵ½¿ÉÖ´ÐÐÎļþ£¬Ö±µ½¿ÉÖ´ÐгÌÐòÔËÐÐʱ£¬²ÅÈ¥¼ÓÔØËùÐèµÄDLL£¬½«¸ÃDLLÓ³Éäµ½½ø³ÌµÄµØÖ·¿Õ¼äÖУ¬È»ºó·ÃÎÊDLLÖе¼³öµÄº¯Êý¡£
     

    1.3.2 ¶¯Ì¬¿âµÄʹÓÃ

    ·½·¨Ò»£ºÒþʽµ÷ÓÃ
         ´´½¨Ö÷³ÌÐòTestDll£¬½«mydll.h¡¢mydll.dllºÍmydll.lib¸´ÖƵ½Ô´´úÂëĿ¼Ï¡£
    (P.S£ºÍ·ÎļþFunc.h²¢²»ÊDZØÐèµÄ£¬Ö»ÊÇC++ÖÐʹÓÃÍⲿº¯Êýʱ£¬ÐèÒªÏȽøÐÐÉùÃ÷)
    ÔÚ³ÌÐòÖÐÖ¸¶¨Á´½ÓÒýÓÃÁ´½Ó¿â : #pragma comment(lib,"./mydll.lib")
     
    ·½·¨¶þ£ºÏÔʽµ÷ÓÃ
    HANDLE hDll; //ÉùÃ÷Ò»¸ödllʵÀýÎļþ¾ä±ú
    hDll = LoadLibrary("mydll.dll"); //µ¼È붯̬Á´½Ó¿â
    MYFUNC minus_test; //´´½¨º¯ÊýÖ¸Õë
    //»ñÈ¡µ¼È뺯ÊýµÄº¯ÊýÖ¸Õë
    minus_test = (MYFUNC)GetProcAddress(hDll, "myminus");
     
    ±¾ÎİæÈ¨¹éÀÖÓã²¥¿ÍC++ÅàѵѧԺËùÓУ¬»¶Ó­×ªÔØ£¬×ªÔØÇë×¢Ã÷×÷Õß³ö´¦¡£Ð»Ð»£¡
    ×÷ÕߣºÀÖÓã²¥¿ÍC/C++ÅàѵѧԺ
    Ê×·¢£ºhttp://www.itcast.cn/c/ 
    0 ·ÖÏíµ½£º
    ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
    ¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿