• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            動態(tài)鏈接庫dll,靜態(tài)鏈接庫lib, 導(dǎo)入庫lib

            目前以lib后綴的庫有兩種,一種為靜態(tài)鏈接庫(Static Libary,以下簡稱靜態(tài)庫”),另一種為動態(tài)連接庫(DLL,以下簡稱動態(tài)庫”)的導(dǎo)入庫(Import Libary,以下簡稱導(dǎo)入庫)。
            靜態(tài)庫是一個或者多個obj文件的打包,所以有人干脆把從obj文件生成lib的過程稱為Archive,即合并到一起。比如你鏈接一個靜態(tài)庫,如果其中有錯,它會準(zhǔn)確的找到是哪個obj有錯,即靜態(tài)lib只是殼子。
            動態(tài)庫一般會有對應(yīng)的導(dǎo)入庫,方便程序靜態(tài)載入動態(tài)鏈接庫,否則你可能就需要自己LoadLibary調(diào)入DLL文件,然后再手工GetProcAddress獲得對應(yīng)函數(shù)了。有了導(dǎo)入庫,你只需要鏈接導(dǎo)入庫后按照頭文件函數(shù)接口的聲明調(diào)用函數(shù)就可以了。
            導(dǎo)入庫和靜態(tài)庫 的區(qū)別很大,他們實質(zhì)是不一樣的東西。靜態(tài)庫本身就包含了實際執(zhí)行代碼、符號表等等 ,而對于導(dǎo)入庫而言,其實際的執(zhí)行代碼位于動態(tài)庫中,導(dǎo)入庫只包含了地址符號表等,確保程序找到對應(yīng)函數(shù)的一些基本地址信息

            這也是實際上很多開源代碼發(fā)布的慣用方式:

            1. 預(yù)編譯的開發(fā)包:包含一些.dll文件和一些.lib文件。其中這里的.lib就是導(dǎo)入庫,而不要錯以為是靜態(tài)庫。但是引入方式和靜態(tài)庫一樣,要在鏈接路徑上添加找到這些.lib的路徑。而.dll則最好放到最后產(chǎn)生的應(yīng)用程序exe執(zhí)行文件相同的目錄。這樣運行時,就會自動調(diào)入動態(tài)鏈接庫。

            2. 用戶自己編譯: 下載的是源代碼,按照readme自己編譯。生成很可能也是.dll + .lib(導(dǎo)入庫)的庫文件

            3. 如果你只有dll,并且你知道dll中函數(shù)的函數(shù)原型,那么你可以直接在自己程序中使用LoadLibary調(diào)入DLL文件,GetProcAddress

            DLL
            動態(tài)鏈接庫 (DLL) 是作為共享函數(shù)庫的可執(zhí)行文件。動態(tài)鏈接提供了一種方法,使進程可以調(diào)用不屬于其可執(zhí)行代碼的函數(shù)。函數(shù)的可執(zhí)行代碼位于一個 DLL 中,該 DLL 包含一個或多個已被編譯、鏈接并與使用它們的進程分開存儲的函數(shù)。DLL 還有助于共享數(shù)據(jù)和資源。多個應(yīng)用程序可同時訪問內(nèi)存中單個 DLL 副本的內(nèi)容。
            動態(tài)鏈接與靜態(tài)鏈接的不同之處在于它允許可執(zhí)行模塊(.dll 文件或 .exe 文件)僅包含在運行時定位 DLL 函數(shù)的可執(zhí)行代碼所需的信息。在靜態(tài)鏈接中,鏈接器從靜態(tài)鏈接庫獲取所有被引用的函數(shù),并將庫同代碼一起放到可執(zhí)行文件中。
            使用動態(tài)鏈接代替靜態(tài)鏈接有若干優(yōu)點。DLL 節(jié)省內(nèi)存,減少交換操作,節(jié)省磁盤空間,更易于升級,提供售后支持,提供擴展 MFC 庫類的機制,支持多語言程序,并使國際版本的創(chuàng)建輕松完成。

            API 就是應(yīng)用程序編程接口。它是能用來操作組件、應(yīng)用程序或者操作系統(tǒng)的一組函數(shù)。典型的情況下,API 由一個或多個提供某種特殊功能的 DLL 組成。
            DLL
            是一個文件,其中包含了在 Microsoft? Windows? 下運行的任何應(yīng)用程序都可調(diào)用的函數(shù)。運行時,DLL 中的函數(shù)動態(tài)地鏈接到調(diào)用它的應(yīng)用程序中。無論有多少應(yīng)用程序調(diào)用 DLL 中的某個函數(shù),在磁盤上只有一個文件包含該函數(shù),且只在它調(diào)入內(nèi)存時才創(chuàng)建該 DLL
            您聽到最多的 API 可能是 Windows API,它包括構(gòu)成 Windows 操作系統(tǒng)的各種 DLL。每個 Windows 應(yīng)用程序都直接或間接地與 Windows API 互動。Windows API 保證 Windows 下運行的所有應(yīng)用程序的行為方式一致。
            注意 隨著 Windows 操作系統(tǒng)的發(fā)展,現(xiàn)已發(fā)布了幾個版本的 Windows APIWindows 3.1 使用 Win16 APIMicrosoft? Windows NT?Windows 95 Windows 98 平臺使用 Microsoft? Win32? API
            Windows API 外,其他一些 API 也已發(fā)布。例如,郵件應(yīng)用程序編程接口 (MAPI) 是一組可用于編寫電子郵件應(yīng)用程序的 DLL
            API
            傳統(tǒng)上是為開發(fā) Windows 應(yīng)用程序的 C C++ 程序員編寫的,但其他的編程語言(包括VBA)也可以調(diào)用 DLL 中的函數(shù)。因為大部分 DLL 主要是為 C C++ 程序員編寫和整理說明的,所以調(diào)用 DLL 函數(shù)的方法與調(diào)用 VBA 函數(shù)會有所不同。在使用 API 時必須了解如何給 DLL 函數(shù)傳遞參數(shù)。
            警告 調(diào)用 Windows API 和 其他 DLL 函數(shù)可能會給您的應(yīng)用程序帶來不良影響。從自己的代碼中直接調(diào)用 DLL 函數(shù)時,您繞過了 VBA 通常提供的一些安全機制。如果在定義或調(diào)用 DLL 函數(shù)時出現(xiàn)錯誤(所有程序員都不可避免),可能會在應(yīng)用程序中引起應(yīng)用程序錯誤(也稱為通用性保護錯誤,或 GPF)。最好的解決辦法是在運行代碼以前保存該項目,并確保了解 DLL 函數(shù)調(diào)用的原理。

            LIB 創(chuàng)建標(biāo)準(zhǔn)庫、導(dǎo)入庫和導(dǎo)出文件,在生成 32 位程序時可將它們與 LINK 一起使用。LIB 從命令提示運行。
            可在下列幾種模式下使用 LIB
            生成或修改 COFF
            將成員對象提取到文件中
            創(chuàng)建導(dǎo)出文件和導(dǎo)入庫
            這些模式是互斥的;每次只能以一種模式使用 LIB

             

            posted on 2010-03-04 13:32 肥仔 閱讀(1451) 評論(0)  編輯 收藏 引用 所屬分類: VC 存檔

            久久66热人妻偷产精品9| 久久综合给合久久狠狠狠97色| 日韩av无码久久精品免费| 国产精品一久久香蕉国产线看观看| 久久天堂AV综合合色蜜桃网| 亚洲七七久久精品中文国产| 99久久做夜夜爱天天做精品| 人人狠狠综合久久亚洲婷婷| 99久久人妻无码精品系列| 97久久国产露脸精品国产| 久久人人爽人人人人爽AV| 久久久久久A亚洲欧洲AV冫| 中文字幕人妻色偷偷久久| 亚洲成av人片不卡无码久久| 99久久精品免费看国产一区二区三区 | 久久精品国产亚洲77777| 精品久久国产一区二区三区香蕉| 久久国产免费直播| 亚洲伊人久久精品影院| 久久精品无码一区二区三区免费 | 亚洲va中文字幕无码久久不卡 | 久久精品卫校国产小美女| 国产精品美女久久福利网站| 国产精品综合久久第一页 | 久久人妻少妇嫩草AV无码蜜桃 | 久久久网中文字幕| 久久久久久毛片免费看| 久久亚洲精品无码观看不卡| 无遮挡粉嫩小泬久久久久久久| 大蕉久久伊人中文字幕| 无码人妻久久一区二区三区免费| 久久亚洲欧洲国产综合| 久久久久精品国产亚洲AV无码 | 狠色狠色狠狠色综合久久| 亚洲精品第一综合99久久| 亚洲午夜无码AV毛片久久| 久久er国产精品免费观看2| 亚洲国产精品无码成人片久久| 国产成人综合久久综合| 久久这里只精品国产99热| 久久久久久久亚洲Av无码|